Market Profile Fixed ViewSome instruments does not provide any volume information, therefore, as a fixed volume profile user, I needed a fixed market profile indicator to use the same principles, regardless of whether the volumes are available or not.
This script draws a market profile histogram corresponding to price variations within a specific duration, you only need to specify Start and End date/time values to see the histogram on your chart.
Details
Two lines corresponding to highest/lowest prices are displayed around the histogram
The redline corresponds to the POC (point of control)
Options
Start calculation
End calculation
Bars number (histogram resolution, currently locked to a max value of 50 bars)
Display side/Width (allows to modify size of bars, to the left or to the right)
Bars/Borders/POC Color customization
Notes
This script will probably be updated (to add VAH/VAL zones, and maybe other options). However, some common market profile attributes have not been implemented yet since I don't really use them)
Pesquisar nos scripts por "volume profile"
Bar Balance [LucF]Bar Balance extracts the number of up, down and neutral intrabars contained in each chart bar, revealing information on the strength of price movement. It can display stacked columns representing raw up/down/neutral intrabar counts, or an up/down balance line which can be calculated and visualized in many different ways.
WARNING: This is an analysis tool that works on historical bars only. It does not show any realtime information, and thus cannot be used to issue alerts or for automated trading. When realtime bars elapse, the indicator will require a browser refresh, a change to its Inputs or to the chart's timeframe/symbol to recalculate and display information on those elapsed bars. Once a trader understands this, the indicator can be used advantageously to make discretionary trading decisions.
Traders used to work with my Delta Volume Columns Pro will feel right at home in this indicator's Inputs . It has lots of options, allowing it to be used in many different ways. If you value the bar balance information this indicator mines, I hope you will find the time required to master the use of Bar Balance well worth the investment.
█ OVERVIEW
The indicator has two modes: Columns and Line .
Columns
• In Columns mode you can display stacked Up/Down/Neutral columns.
• The "Up" section represents the count of intrabars where `close > open`, "Down" where `close < open` and "Neutral" where `close = open`.
• The Up section always appears above the centerline, the Down section below. The Neutral section overlaps the centerline, split halfway above and below it.
The Up and Down sections start where the Neutral section ends, when there is one.
• The Up and Down sections can be colored independently using 7 different methods.
• The signal line plotted in Line mode can also be displayed in Columns mode.
Line
• Displays a single balance line using a zero centerline.
• A variable number of independent methods can be used to calculate the line (6), determine its color (5), and color the fill (5).
You can thus evaluate the state of 3 different components with this single line.
• A "Divergence Levels" feature will use the line to automatically draw expanding levels on divergence events.
Features available in both modes
• The color of all components can be selected from 15 base colors, with 16 gradient levels used for each base color in the indicator's gradients.
• A zero line can show a 6-state aggregate value of the three main volume balance modes.
• The background can be colored using any of 5 different methods.
• Chart bars can be colored using 5 different methods.
• Divergence and large neutral count ratio events can be shown in either Columns or Line mode, calculated in one of 4 different methods.
• Markers on 6 different conditions can be displayed.
█ CONCEPTS
Intrabar inspection
Intrabar inspection means the indicator looks at lower timeframe bars ( intrabars ) making up a given chart bar to gather its information. If your chart is on a 1-hour timeframe and the intrabar resolution determined by the indicator is 5 minutes, then 12 intrabars will be analyzed for each chart bar and the count of up/down/neutral intrabars among those will be tallied.
Bar Balances and calculation methods
The indicator uses a variety of methods to evaluate bar balance and to derive other calculations from them:
1. Balance on Bar : Uses the relative importance of instant Up and Down counts on the bar.
2. Balance Averages : Uses the difference between the EMAs of Up and Down counts.
3. Balance Momentum : Starts by calculating, separately for both Up and Down counts, the difference between the same EMAs used in Balance Averages and an SMA of double the period used for the EMAs. These differences are then aggregated and finally, a bounded momentum of that aggregate is calculated using RSI.
4. Markers Bias : It sums the bull/bear occurrences of the four previous markers over a user-defined period (the default is 14).
5. Combined Balances : This is the aggregate of the instant bull/bear bias of the three main bar balances.
6. Dual Up/Down Averages : This is a display mode showing the EMA calculated for each of the Up and Down counts.
Interpretation of neutral intrabars
What do neutral intrabars mean? When price does not change during a bar, it can be because there is simply no interest in the market, or because of a perfect balance between buyers and sellers. The latter being more improbable, Bar Balance assumes that neutral bars reveal a lack of interest, which entails uncertainty. That is the reason why the option is provided to interpret ratios of neutral intrabars greater than 50% as divergences. It is also the rationale behind the option to dampen signal lines on the inverse ratio of neutral intrabars, so that zero intrabars do not affect the signal, and progressively larger proportions of neutral intrabars will reduce the signal's amplitude, as the balance calcs using the up/down counts lose significance. The impact of the dampening will vary with markets. Weaker markets such as cryptos will often contain greater numbers of neutral intrabars, so dampening the Line in that sector will have a greater impact than in more liquid markets.
█ FEATURES
1 — Columns
• While the size of the Up/Down columns always represents their respective importance on the bar, their coloring mode is independent. The default setup uses a standard coloring mode where the Up/Down columns over/under the zero line are always in the bull/bear color with a higher intensity for the winning side. Six other coloring modes allow you to pack more information in the columns. When choosing to color the top columns using a bull/bear gradient on Balance Averages, for example, you will end up with bull/bear colored tops. In order for the color of the bottom columns to continue to show the instant bar balance, you can then choose the "Up/Down Ratio on Bar — Dual Solid Colors" coloring mode to make those bars the color of the winning side for that bar.
• Line mode shows only the line, but Columns mode allows displaying the line along with it. If the scale of the line is different than that of the scale of the columns, the line will often appear flat. Traders may find even a flat line useful as its bull/bear colors will be easily distinguishable.
2 — Line
• The default setup for Line mode uses a calculation on "Balance Momentum", with a fill on the longer-term "Balance Averages" and a line color based on the "Markers Bias". With the background set on "Line vs Divergence Levels" and the zero line on the hard-coded "Combined Bar Balances", you have access to five distinct sources of information at a glance, to which you can add divergences, divergences levels and chart bar coloring. This provides powerful potential in displaying bar balance information.
• When no columns are displayed, Line mode can show the full scale of whichever line you choose to calculate because the columns' scale no longer interferes with the line's scale.
• Note that when "Balance on Bar" is selected, the Neutral count is also displayed as a ratio of the balance line. This is the only instance where the Neutral count is displayed in Line mode.
• The "Dual Up/Down Averages" is an exception as it displays two lines: one average for the Up counts and another for the Down counts. This mode will be most useful when Columns are also displayed, as it provides a reference for the top and bottom columns.
3 — Zero Line
The zero line can be colored using two methods, both based on the Combined Balances, i.e., the aggregate of the instant bull/bear bias of the three main bar balances.
• In "Six-state Dual Color Gradient" mode, a dot appears on every bar. Its color reflects the bull/bear state of the Combined Balances, and the dot's brightness reflects the tally of balance biases.
• In "Dual Solid Colors (All Bull/All Bear Only)" a dot only appears when all three balances are either bullish or bearish. The resulting pattern is identical to that of Marker 1.
4 — Divergences
• Divergences are displayed as a small circle at the top of the scale. Four different types of divergence events can be detected. Divergences occur whenever the bull/bear bias of the method used diverges with the bar's price direction.
• An option allows you to include in divergence events instances where the count of neutral intrabars exceeds 50% of the total intrabar count.
• The divergence levels are dynamic levels that automatically build from the line's values on divergence events. On consecutive divergences, the levels will expand, creating a channel. This implementation of the divergence levels corresponds to my view that divergences indicate anomalies, hesitations, points of uncertainty if you will. It excludes any association of a pre-determined bullish/bearish bias to divergences. Accordingly, the levels merely take note of divergence events and mark those points in time with levels. Traders then have a reference point from which they can evaluate further movement. The bull/bear/neutral colors used to plot the levels are also congruent with this view in that they are determined by price's position relative to the levels, which is how I think divergences can be put to the most effective use.
5 — Background
• The background can show a bull/bear gradient on four different calculations. You can adjust its brightness to make its visual importance proportional to how you use it in your analysis.
6 — Chart bars
• Chart bars can be colored using five different methods.
• You have the option of emptying the body of bars where volume does not increase, as does my TLD indicator, the idea behind this being that movement on bars where volume does not increase is less relevant.
7 — Intrabar Resolution
You can choose between three modes. Two of them are automatic and one is manual:
a) Fast, Longer history, Auto-Steps (~12 intrabars) : Optimized for speed and deeper history. Uses an average minimum of 12 intrabars.
b) More Precise, Shorter History Auto-Steps (~24 intrabars) : Uses finer intrabar resolution. It is slower and provides less history. Uses an average minimum of 24 intrabars.
c) Fixed : Uses the fixed resolution of your choice.
Auto-Steps calculations vary for 24/7 and conventional markets in order to achieve the proper target of minimum intrabars.
You can choose to view the intrabar resolution currently used to calculate delta volume. It is the default.
The proper selection of the intrabar resolution is important. It must achieve maximal granularity to produce precise results while not unduly slowing down calculations, or worse, causing runtime errors.
8 — Markers
Six markers are available:
1. Combined Balances Agreement : All three Bar Balances are either bullish or bearish.
2. Up or Down % Agrees With Bar : An up marker will appear when the percentage of up intrabars in an up chart bar is greater than the specified percentage. Conditions mirror to down bars.
3. Divergence confirmations By Price : One of the four types of balance calculations can be used to detect divergences with price. Confirmations occur when the bar following the divergence confirms the balance bias. Note that the divergence events used here do not include neutral intrabar events.
4. Balance Transitions : Bull/bear transitions of the selected balance.
5. Markers Bias Transitions : Bull/bear transitions of the Markers Bias.
6. Divergence Confirmations By Line : Marks points where the line first breaches a divergence level.
Markers appear when the condition is detected, without delay. Since nothing is plotted in realtime, markers do not appear on the realtime bar.
9 — Settings
• Two modes can be selected to dampen the line on the ratio of neutral intrabars.
• A distinct weight can be attributed to the count of the latter half of intrabars, on the assumption that later intrabars may be more important in determining the outcome of chart bars.
• Allows control over the periods of the different moving averages used in calculations.
• The default periods used for the various calculations define the following hierarchy from slow to fast:
Balance Averages: 50,
Balance Momentum: 20,
Dual Up/Down Averages: 20,
Marker Bias: 10.
█ LIMITATIONS
• This script uses a special characteristic of the `security()` function allowing the inspection of intrabars—which is not officially supported by TradingView.
• The method used does not work on the realtime bar—only on historical bars.
• The indicator only works on some chart resolutions: 3, 5, 10, 15 and 30 minutes, 1, 2, 4, 6, and 12 hours, 1 day, 1 week and 1 month. The script’s code can be modified to run on other resolutions, but chart resolutions must be divisible by the lower resolution used for intrabars and the stepping mechanism could require adaptation.
• When using the "Line vs Divergence Levels — Dual Color Gradient" color mode to fill the line, background or chart bars, keep in mind that a line calculation mode must be defined for it to work, as it determines gradients on the movement of the line relative to divergence levels. If the line is hidden, it will not work.
• When the difference between the chart’s resolution and the intrabar resolution is too great, runtime errors will occur. The Auto-Steps selection mechanisms should avoid this.
• Alerts do not work reliably when `security()` is used at intrabar resolutions. Accordingly, no alerts are configured in the indicator.
• The color model used in the indicator provides for fancy visuals that come at a price; when you change values in Inputs , it can take 20 seconds for the changes to materialize. Luckily, once your color setup is complete, the color model does not have a large performance impact, as in normal operation the `security()` calls will become the most important factor in determining response time. Also, once in a while a runtime error will occur when you change inputs. Just making another change will usually bring the indicator back up.
█ RAMBLINGS
Is this thing useful?
I'll let you decide. Bar Balance acts somewhat like an X-Ray on bars. The intrabars it analyzes are no secret; one can simply change the chart's resolution to see the same intrabars the indicator uses. What the indicator brings to traders is the precise count of up/down/neutral intrabars and, more importantly, the calculations it derives from them to present the information in a way that can make it easier to use in trading decisions.
How reliable is Bar Balance information?
By the same token that an up bar does not guarantee that more up bars will follow, future price movements cannot be inferred from the mere count of up/down/neutral intrabars. Price movement during any chart bar for which, let's say, 12 intrabars are analyzed, could be due to only one of those intrabars. One can thus easily see how only relying on bar balance information could be very misleading. The rationale behind Bar Balance is that when the information mined for multiple chart bars is aggregated, it can provide insight into the history behind chart bars, and thus some bias as to the strength of movements. An up chart bar where 11/12 intrabars are also up is assumed to be stronger than the same up bar where only 2/12 intrabars are up. This logic is not bulletproof, and sometimes Bar Balance will stray. Also, keep in mind that balance lines do not represent price momentum as RSI would. Bar Balance calculations have no idea where price is. Their perspective, like that of any historian, is very limited, constrained that it is to the narrow universe of up/down/neutral intrabar counts. You will thus see instances where price is moving up while Balance Momentum, for example, is moving down. When Bar Balance performs as intended, this indicates that the rally is weakening, which does necessarily imply that price will reverse. Occasionally, price will merrily continue to advance on weakening strength.
Divergences
Most of the divergence detection methods used here rely on a difference between the bias of a calculation involving a multi-bar average and a given bar's price direction. When using "Bar Balance on Bar" however, only the bar's balance and price movement are used. This is the default mode.
As usual, divergences are points of interest because they reveal imbalances, which may or may not become turning points. I do not share the overwhelming enthusiasm traders have for the purported ability of bullish/bearish divergences to indicate imminent reversals.
Superfluity
In "The Bed of Procrustes", Nassim Nicholas Taleb writes: To bankrupt a fool, give him information . Bar Balance can display lots of information. While learning to use a new indicator inevitably requires an adaptation period where we put it through its paces and try out all its options, once you have become used to Bar Balance and decide to adopt it, rigorously eliminate the components you don't use and configure the remaining ones so their visual prominence reflects their relative importance in your analysis. I tried to provide flexible options for traders to control this indicator's visuals for that exact reason—not for window dressing.
█ NOTES
For traders
• To avoid misleading traders who don't read script descriptions, the indicator shows nothing in the realtime bar.
• The Data Window shows key values for the indicator.
• All gradients used in this indicator determine their brightness intensities using advances/declines in the signal—not their relative position in a fixed scale.
• Note that because of the way gradients are optimized internally, changing their brightness will sometimes require bringing down the value a few steps before you see an impact.
• Because this indicator does not use volume, it will work on all markets.
For coders
• For those interested in gradients, this script uses an advanced version of the Advance/Decline gradient function from the PineCoders Color Gradient (16 colors) Framework . It allows more precise control over the range, steps and min/max values of the gradients.
• I use the PineCoders Coding Conventions for Pine to write my scripts.
• I used functions modified from the PineCoders MTF Selection Framework for the selection of timeframes.
█ THANKS TO:
— alexgrover who helped me think through the dampening method used to attenuate signal lines on high ratios of neutral intrabars.
— A guy called Kuan who commented on a Backtest Rookies presentation of their Volume Profile indicator . The technique I use to inspect intrabars is derived from Kuan's code.
— theheirophant , my partner in the exploration of the sometimes weird abysses of `security()`’s behavior at intrabar resolutions.
— midtownsk8rguy , my brilliant companion in mining the depths of Pine graphics. He is also the co-author of the PineCoders Color Gradient Frameworks .
Volume Voids [theUltimator5]Volume Voids highlights price regions with no or unusually thin participation over a chosen lookback. It bins the lookback’s full price range into equal steps, assigns each bar’s close to a bin, and accumulates volume per bin. Contiguous runs of zero-volume bins are shown as “voids,” while low-volume runs (below a dynamic threshold) mark thin-liquidity “corridors” where price often traverses quickly when revisited.
An optional PoC (Point of Control) line marks the mid-price of the highest-volume bin—commonly treated as a recent “value” area that price may revisit.
What it draws on your chart
Histogram (optional): Right-anchored horizontal volume-by-price bars built from your lookback and bin count. Bars tint green→red via a simple delta proxy (up-bar volume minus down-bar volume) to hint at directional participation inside each price band.
Point of Control (optional): A horizontal line at the highest-volume bin’s mid-price (the PoC).
Zero-Volume Voids: Translucent boxes where no bin volume printed within the window (detected between the first and last non-empty bins ).
Low-Volume Zones: Translucent boxes where bin volume is below a dynamic threshold (see formula below), often acting like low-friction corridors.
How it works
Slice the lookback’s high→low into N equal price bins.
Assign each bar’s closing price to a bin and add that bar’s volume to the bin total. A simple up/down-bar delta proxy drives the histogram’s tinting.
PoC = bin with the maximum accumulated volume.
Zero-Volume Voids = contiguous runs of bins with exactly zero volume (bounded by the first/last occupied bins).
Low-Volume Zones = contiguous runs of bins with volume below:
threshold = total_window_volume ÷ (divisor × number_of_bins)
Lower divisor → more LV boxes; higher divisor → stricter/fewer boxes.
Note: This is a lightweight, chart-native approximation of a volume profile. Volume is binned by bar close (not by tick-level prints or intrabar distribution), so “voids”/“thin” areas reflect this approximation.
Key inputs
Lookback Period: Window for calculations.
Number of Volume Boxes (bins): Histogram resolution.
PoC / Show Histogram / Anchor to Right Side: Visibility and layout controls.
Low-Volume Threshold Divisor: Sensitivity for LV detection.
Colors & Labels: Customize zero-volume / low-volume box colors and optional labels with offsets.
How to use (educational, not signals)
Context: High-volume = acceptance; thin/zero-volume = inefficiency. Price often rotates near acceptance and moves faster through thin areas.
Revisits: On returns to prior voids/LV zones, watch for accelerated moves or fills; PoC can serve as a balance reference.
Confluence: Pair with trend tools (e.g., ADX), VWAP/session markers, or structure levels for timing and risk.
Limitations & performance
Bins use closing price only; intrabar distribution is not modeled.
Detections refresh on the live bar; visuals can be heavy on large lookbacks/high bin counts—reduce bins/lookback or hide labels if needed.
Technical Summary VWAP | RSI | VolatilityTechnical Summary VWAP | RSI | Volatility
The Quantum Trading Matrix is a multi-dimensional market-analysis dashboard designed as an educational and idea-generation tool to help traders read price structure, participation, momentum and volatility in one compact view. It is not an automated execution system; rather, it aggregates lightweight “quantum” signals — VWAP position, momentum oscillator behaviour, multi-EMA trend scoring, volume flow and institutional activity heuristics, market microstructure pivots and volatility measures — and synthesizes them into a single, transparent score and signal recommendation. The primary goal is to make explicit why a given market looks favourable or unfavourable by showing the individual ingredients and how they combine, enabling traders to learn, test and form rules based on observable market mechanics.
Each module of the matrix answers a distinct market question. VWAP and its percentage distance indicate whether the current price is trading above or below the intraday volume-weighted average — a proxy for intraday institutional control and value. The quantum momentum oscillator (fast and slow EMA difference scaled to percent) captures short-to-intermediate momentum shifts, providing a quickly responsive view of directional pressure. Multi-EMA trend scoring (8/21/50) produces a simple, transparent trend score by counting conditions such as price above EMAs and cross-EMAs ordering; this score is used to categorize market trend into descriptive buckets (e.g., STRONG UP, WEAK UP, NEUTRAL, DOWN). Volume analysis compares current volume to a recent moving average and computes a Z-score to detect spikes and unusual participation; additional buy/sell pressure heuristics (buyingPressure, sellingPressure, flowRatio) estimate whether upside or downside participation dominates the bar. Institutional activity is approximated by flagging large orders relative to volume baseline (e.g., volume > 2.5× MA) and estimating a dark pool proxy; this is a heuristic to highlight bars that likely had large players involved.
The dashboard also performs market-structure detection with small pivot windows to identify recent local support/resistance areas and computes price position relative to the daily high/low (dailyMid, pricePosition). Volatility is measured via ATR divided by price and bucketed into LOW/NORMAL/HIGH/EXTREME categories to help you adapt stop sizing and expectational horizons. Finally, all these pieces feed an interpretable scoring function that rewards alignment: VWAP above, strong flow ratio, bullish trend score, bullish momentum, and favorable RSI zone add to the overall score which is presented as a 0–100 metric and a colored emoji indicator for at-a-glance assessment.
The mashup is purposeful: each indicator covers a failure mode of the other. For example, momentum readings can be misleading during volatility spikes; VWAP informs whether institutions are on the bid or offer; volume Z-score detects abnormal participation that can validate a breakout; multi-EMA score mitigates single-EMA whipsaws by requiring a combination of price/EMA conditions. Combining these signals increases information content while keeping each component explainable — a key compliance requirement. The script intentionally emphasizes transparency: when it shows a BUY/SELL/HOLD recommendation, the dashboard shows the underlying sub-components so a trader can see whether VWAP, momentum, volume, trend or structure primarily drove the score.
For practical use, adopt a clear workflow: (1) check the matrix score and read the component tiles (VWAP position, momentum, trend and volume) to understand the drivers; (2) confirm market-structure support/resistance and pricePosition relative to the daily range; (3) require at least two corroborating components (for example, VWAP ABOVE + Momentum BULLISH or Volume spike + Trend STRONG UP) before considering entries; (4) use ATR-based stops or daily pivot distance for stop placement and size positions such that the trade risks a small, pre-defined percent of capital; (5) for intraday scalps shorten holding time and tighten stops, for swing trades increase lookback lengths and require multi-timeframe (higher TF) agreement. Treat the matrix as an idea filter and replay lab: when an alert triggers, replay the bars and observe which components anticipated the move and which lagged.
Parameter tuning matters. Shortening the momentum length makes the oscillator more sensitive (useful for scalping), while lengthening it reduces noise for swing contexts. Volume profile bars and MA length should match the instrument’s liquidity — increase the MA for low-liquidity stocks to reduce false institutional flags. The trend multiplier and signal sensitivity parameters let you calibrate how aggressively the matrix counts micro evidence into the score. Always backtest parameter sets across multiple periods and instruments; run walk-forward tests and keep a simple out-of-sample validation window to reduce overfitting risk.
Limitations and failure modes are explicit: institutional flags and dark-pool estimates are heuristics and cannot substitute for true tape or broker-level order flow; volume split by price range is an approximation and will not perfectly reflect signed volume; pivot detection with small windows may miss larger structural swings; VWAP is typically intraday-centric and less meaningful across multi-day swing contexts; the score is additive and may not capture non-linear relationships between features in extreme market regimes (e.g., flash crashes, circuit breaker events, or overnight gaps). The matrix is also susceptible to false signals during major news releases when price and volume behavior dislocate from typical patterns. Users should explicitly test behavior around earnings, macro data and low-liquidity periods.
To learn with the matrix, perform these experiments: (A) collect all BUY/SELL alerts over a 6-month period and measure median outcome at 5, 20 and 60 bars; (B) require additional gating conditions (e.g., only accept BUY when flowRatio>60 and trendScore≥4) and compare expectancy; (C) vary the institutional threshold (2×, 2.5×, 3× volumeMA) to see how many true positive spikes remain; (D) perform multi-instrument tests to ensure parameters are not tuned to a single ticker. Document every test and prefer robust, slightly lower returns with clearer logic rather than tuned “optimal” results that fail out of sample.
Originality statement: This script’s originality lies in the curated combination of intraday value (VWAP), multi-EMA trend scoring, momentum percent oscillator, volume Z-score plus buy/sell flow heuristics and a compact, interpretable scoring system. The script is not a simple indicator mashup; it is a didactic ensemble specifically designed to make internal rationale visible so traders can learn how each market characteristic contributes to actionable probability. The tool’s novelty is its emphasis on interpretability — showing the exact contributing signals behind a composite score — enabling reproducible testing and educational value.
Finally, for TradingView publication, include a clear description listing the modules, a short non-technical summary of how they interact, the tunable inputs, limitations and a risk disclaimer. Remove any promotional content or external contact links. If you used trademark symbols, either provide registration details or remove them. This transparent documentation satisfies TradingView’s requirement that mashups justify their composition and teach users how to use them.
Quantum Trading Matrix — multi-factor intraday dashboard (educational use only).
Purpose: Combines intraday VWAP position, a fast/slow EMA momentum percent oscillator, multi-EMA trend scoring (8/21/50), volume Z-score and buy/sell flow heuristics, pivot-based microstructure detection, and ATR-based volatility buckets to produce a transparent, componentized market score and trade-idea indicator. The mashup is intentional: VWAP identifies intraday value, momentum detects short bursts, EMAs provide structural trend bias, and volume/flow confirm participation. Signals require alignment of at least two components (for example, VWAP ABOVE + Momentum BULLISH + positive flow) for higher confidence.
Inputs: momentum period, volume MA/profile length, EMA configuration (8/21/50), trend multiplier, signal sensitivity, color and display options. Use shorter momentum lengths for scalps and longer for swing analysis. Increase volume MA for thinly traded instruments.
Limitations: Institutional/dark-pool estimates and flow heuristics are approximations, not actual exchange tape. VWAP is intraday-focused. Expect false signals during major news or low-liquidity sessions. Backtest and paper-trade before applying real capital.
Risk Disclaimer: For education and analysis only. Not financial advice. Use proper risk management. The author is not responsible for trading losses.
________________________________________
Risk & Misuse Disclaimer
This indicator is provided for education, analysis and idea generation only. It is not investment or financial advice and does not guarantee profits. Institutional activity flags, dark-pool estimates and flow heuristics are approximations and should not be treated as exchange tape. Backtest thoroughly and use demo/paper accounts before trading real capital. Always apply appropriate position sizing and stop-loss rules. The author is not responsible for any trading losses resulting from the use or misuse of this tool.
________________________________________
Risk Disclaimer: This tool is provided for education and analysis only. It is not financial advice and does not guarantee returns. Users assume all risk for trades made based on this script. Back test thoroughly and use proper risk management.
Anchored Grids ft. VolumeINTRO
The 'Volume Profile' is a great tool, isn’t it? It shows us where volume has accumulated on the chart and helps guide trading decisions. The only catch is that we can’t really choose the levels—it’s all based on where volume happens to cluster. But what if we reversed the logic and measured the volume at the levels we define? That’s exactly what this script does, giving you a fresh way to spot support and resistance :)
OVERVIEW
'Anchored Grids ft. Volume' is a sophisticated technical analysis tool that combines price grid analysis with volume accumulation metrics. This indicator dynamically calculates and displays custom support and resistance levels based on a user-defined timeframe, while simultaneously tracking and visualizing volume accumulation at each specific price level. Unlike traditional volume profile indicators that use complex statistical clustering, this tool provides straightforward volume measurement at predetermined technical levels. It answers a critical question: "How much trading activity occurred near the key price levels I care about?".
HOW DOES THIS INDICATOR WORK?
This indicator builds a customizable grid system anchored to the opening price of any user-selected timeframe (hourly, daily, weekly, etc.). From that anchor point, it continuously tracks the highest high and lowest low, then calculates equidistant grid levels within that range. Two calculation modes are available—Arithmetic and Geometric—allowing flexibility in how the levels are distributed.
Once the grid is established, a volume accumulation engine comes into play. For each price bar, the script checks whether the bar’s range intersects with any level’s tolerance zone (default 0.01%). If a touch is detected, that bar’s volume is added to the corresponding level. Over time, this process builds a clear picture of where significant trading activity has clustered.
The visualization system highlights these dynamics by applying a color gradient based on volume intensity and adjusting line thickness proportional to accumulated volume. Each level is also labeled with four key data points:
The grid number (in square brackets)
The price of the level
The percentage distance between the level and the opening price of the selected timeframe
The total volume accumulated within the level’s tolerance range
PARAMETERS
Timeframe: Defines the anchor period for grid calculation. Then, the indicator automatically determines the open, high, and low prices.
Mode: This option determines how the distance between levels is calculated: Arithmetic (linear) means equal price spacing between levels, while Geometric (logarithmic) means equal percentage spacing between levels.
Grids: It's the number of levels between high and low.
Color: Base color for grid lines and labels. When volume data is displayed, lower values are darkened by 50%.
Show Volume Accumulation: When this parameter is activated, the volume calculation is enabled.
Tolerance : The Tolerance parameter (default range: 0.01%) defines the price range around each grid level where volume accumulation is registered. It acts as a sensitivity control that determines how close price must be to a level to count trading volume toward that level's accumulation.
ORIGINALITY
It’s possible to find comprehensive grid-drawing tools among community indicators, but I haven’t come across an example that combines this concept with volume data. More importantly, I wanted to demonstrate how volume accumulation can be generated for any data modeled as an array on the chart by developers.
SUMMARY
In conclusion, the selected timeframe and the number of grids are only used as a reference to determine where the levels are drawn. The true value of this indicator lies in its ability to calculate volume accumulation directly from the chart’s own candles, showing how much trading activity occurred around each level. The result is a hybrid framework that merges structural price analysis with volume distribution, offering traders deeper insights into where markets are likely to react.
NOTE
While powerful, this tool should be used as part of a comprehensive trading strategy rather than as a standalone system. Always combine with risk management principles and market context awareness. I hope it helps everyone. Trade as safely as possible. Best of luck!
Quantum Dip Hunter | AlphaNattQuantum Dip Hunter | AlphaNatt
🎯 Overview
The Quantum Dip Hunter is an advanced technical indicator designed to identify high-probability buying opportunities when price temporarily dips below dynamic support levels. Unlike simple oversold indicators, this system uses a sophisticated quality scoring algorithm to filter out low-quality dips and highlight only the best entry points.
"Buy the dip" - but only the right dips. Not all dips are created equal.
⚡ Key Features
5 Detection Methods: Choose from Dynamic, Fibonacci, Volatility, Volume Profile, or Hybrid modes
Quality Scoring System: Each dip is scored from 0-100% based on multiple factors
Smart Filtering: Only signals above your quality threshold are displayed
Visual Effects: Glow, Pulse, and Wave animations for the support line
Risk Management: Automatic stop-loss and take-profit calculations
Real-time Statistics: Live dashboard showing current market conditions
📊 How It Works
The indicator calculates a dynamic support line using your selected method
When price dips below this line, it evaluates the dip quality
Quality score is calculated based on: trend alignment (30%), volume (20%), RSI (20%), momentum (15%), and dip depth (15%)
If the score exceeds your minimum threshold, a buy signal arrow appears
Stop-loss and take-profit levels are automatically calculated and displayed
🚀 Detection Methods Explained
Dynamic Support
Adapts to recent price action
Best for: Trending markets
Uses ATR-adjusted lowest points
Fibonacci Support
Based on 61.8% and 78.6% retracement levels
Best for: Pullbacks in strong trends
Automatically switches between fib levels
Volatility Support
Uses Bollinger Band methodology
Best for: Range-bound markets
Adapts to changing volatility
Volume Profile Support
Finds high-volume price levels
Best for: Identifying institutional support
Updates dynamically as volume accumulates
Hybrid Mode
Combines all methods for maximum accuracy
Best for: All market conditions
Takes the most conservative support level
⚙️ Key Settings
Dip Detection Engine
Detection Method: Choose your preferred support calculation
Sensitivity: Higher = more sensitive to price movements (0.5-3.0)
Lookback Period: How far back to analyze (20-200 bars)
Dip Depth %: Minimum dip size to consider (0.5-10%)
Quality Filters
Trend Filter: Only buy dips in uptrends when enabled
Minimum Dip Score: Quality threshold for signals (0-100%)
Trend Strength: Required trend score when filter is on
📈 Trading Strategies
Conservative Approach
Use Dynamic method with Trend Filter ON
Set minimum score to 80%
Risk:Reward ratio of 2:1 or higher
Best for: Swing trading
Aggressive Approach
Use Hybrid method with Trend Filter OFF
Set minimum score to 60%
Risk:Reward ratio of 1:1
Best for: Day trading
Scalping Setup
Use Volatility method
Set sensitivity to 2.0+
Focus on Target 1 only
Best for: Quick trades
🎨 Visual Customization
Color Themes:
Neon: Bright cyan/magenta for dark backgrounds
Ocean: Cool blues and teals
Solar: Warm yellows and oranges
Matrix: Classic green terminal look
Gradient: Smooth color transitions
Line Styles:
Solid: Clean, simple line
Glow: Adds depth with glow effect
Pulse: Animated breathing effect
Wave: Oscillating wave pattern
💡 Pro Tips
Start with the Trend Filter ON to avoid catching falling knives
Higher quality scores (80%+) have better win rates but fewer signals
Use Volume Profile method near major support/resistance levels
Combine with your favorite momentum indicator for confirmation
The pulse animation can help draw attention to key levels
⚠️ Important Notes
This indicator identifies potential entries, not guaranteed profits
Always use proper risk management
Works best on liquid instruments with good volume
Backtest your settings before live trading
Not financial advice - use at your own risk
📊 Statistics Panel
The live statistics panel shows:
Current detection method
Support level value
Trend direction
Distance from support
Current signal status
🤝 Support
Created by AlphaNatt
For questions or suggestions, please comment below!
Happy dip hunting! 🎯
Not financial advice, always do your own research
real_time_candlesIntroduction
The Real-Time Candles Library provides comprehensive tools for creating, manipulating, and visualizing custom timeframe candles in Pine Script. Unlike standard indicators that only update at bar close, this library enables real-time visualization of price action and indicators within the current bar, offering traders unprecedented insight into market dynamics as they unfold.
This library addresses a fundamental limitation in traditional technical analysis: the inability to see how indicators evolve between bar closes. By implementing sophisticated real-time data processing techniques, traders can now observe indicator movements, divergences, and trend changes as they develop, potentially identifying trading opportunities much earlier than with conventional approaches.
Key Features
The library supports two primary candle generation approaches:
Chart-Time Candles: Generate real-time OHLC data for any variable (like RSI, MACD, etc.) while maintaining synchronization with chart bars.
Custom Timeframe (CTF) Candles: Create candles with custom time intervals or tick counts completely independent of the chart's native timeframe.
Both approaches support traditional candlestick and Heikin-Ashi visualization styles, with options for moving average overlays to smooth the data.
Configuration Requirements
For optimal performance with this library:
Set max_bars_back = 5000 in your script settings
When using CTF drawing functions, set max_lines_count = 500, max_boxes_count = 500, and max_labels_count = 500
These settings ensure that you will be able to draw correctly and will avoid any runtime errors.
Usage Examples
Basic Chart-Time Candle Visualization
// Create real-time candles for RSI
float rsi = ta.rsi(close, 14)
Candle rsi_candle = candle_series(rsi, CandleType.candlestick)
// Plot the candles using Pine's built-in function
plotcandle(rsi_candle.Open, rsi_candle.High, rsi_candle.Low, rsi_candle.Close,
"RSI Candles", rsi_candle.candle_color, rsi_candle.candle_color)
Multiple Access Patterns
The library provides three ways to access candle data, accommodating different programming styles:
// 1. Array-based access for collection operations
Candle candles = candle_array(source)
// 2. Object-oriented access for single entity manipulation
Candle candle = candle_series(source)
float value = candle.source(Source.HLC3)
// 3. Tuple-based access for functional programming styles
= candle_tuple(source)
Custom Timeframe Examples
// Create 20-second candles with EMA overlay
plot_ctf_candles(
source = close,
candle_type = CandleType.candlestick,
sample_type = SampleType.Time,
number_of_seconds = 20,
timezone = -5,
tied_open = true,
ema_period = 9,
enable_ema = true
)
// Create tick-based candles (new candle every 15 ticks)
plot_ctf_tick_candles(
source = close,
candle_type = CandleType.heikin_ashi,
number_of_ticks = 15,
timezone = -5,
tied_open = true
)
Advanced Usage with Custom Visualization
// Get custom timeframe candles without automatic plotting
CandleCTF my_candles = ctf_candles_array(
source = close,
candle_type = CandleType.candlestick,
sample_type = SampleType.Time,
number_of_seconds = 30
)
// Apply custom logic to the candles
float ema_values = my_candles.ctf_ema(14)
// Draw candles and EMA using time-based coordinates
my_candles.draw_ctf_candles_time()
ema_values.draw_ctf_line_time(line_color = #FF6D00)
Library Components
Data Types
Candle: Structure representing chart-time candles with OHLC, polarity, and visualization properties
CandleCTF: Extended candle structure with additional time metadata for custom timeframes
TickData: Structure for individual price updates with time deltas
Enumerations
CandleType: Specifies visualization style (candlestick or Heikin-Ashi)
Source: Defines price components for calculations (Open, High, Low, Close, HL2, etc.)
SampleType: Sets sampling method (Time-based or Tick-based)
Core Functions
get_tick(): Captures current price as a tick data point
candle_array(): Creates an array of candles from price updates
candle_series(): Provides a single candle based on latest data
candle_tuple(): Returns OHLC values as a tuple
ctf_candles_array(): Creates custom timeframe candles without rendering
Visualization Functions
source(): Extracts specific price components from candles
candle_ctf_to_float(): Converts candle data to float arrays
ctf_ema(): Calculates exponential moving averages for candle arrays
draw_ctf_candles_time(): Renders candles using time coordinates
draw_ctf_candles_index(): Renders candles using bar index coordinates
draw_ctf_line_time(): Renders lines using time coordinates
draw_ctf_line_index(): Renders lines using bar index coordinates
Technical Implementation Notes
This library leverages Pine Script's varip variables for state management, creating a sophisticated real-time data processing system. The implementation includes:
Efficient tick capturing: Samples price at every execution, maintaining temporal tracking with time deltas
Smart state management: Uses a hybrid approach with mutable updates at index 0 and historical preservation at index 1+
Temporal synchronization: Manages two time domains (chart time and custom timeframe)
The tooltip implementation provides crucial temporal context for custom timeframe visualizations, allowing users to understand exactly when each candle formed regardless of chart timeframe.
Limitations
Custom timeframe candles cannot be backtested due to Pine Script's limitations with historical tick data
Real-time visualization is only available during live chart updates
Maximum history is constrained by Pine Script's array size limits
Applications
Indicator visualization: See how RSI, MACD, or other indicators evolve in real-time
Volume analysis: Create custom volume profiles independent of chart timeframe
Scalping strategies: Identify short-term patterns with precisely defined time windows
Volatility measurement: Track price movement characteristics within bars
Custom signal generation: Create entry/exit signals based on custom timeframe patterns
Conclusion
The Real-Time Candles Library bridges the gap between traditional technical analysis (based on discrete OHLC bars) and the continuous nature of market movement. By making indicators more responsive to real-time price action, it gives traders a significant edge in timing and decision-making, particularly in fast-moving markets where waiting for bar close could mean missing important opportunities.
Whether you're building custom indicators, researching price patterns, or developing trading strategies, this library provides the foundation for sophisticated real-time analysis in Pine Script.
Implementation Details & Advanced Guide
Core Implementation Concepts
The Real-Time Candles Library implements a sophisticated event-driven architecture within Pine Script's constraints. At its heart, the library creates what's essentially a reactive programming framework handling continuous data streams.
Tick Processing System
The foundation of the library is the get_tick() function, which captures price updates as they occur:
export get_tick(series float source = close, series float na_replace = na)=>
varip float price = na
varip int series_index = -1
varip int old_time = 0
varip int new_time = na
varip float time_delta = 0
// ...
This function:
Samples the current price
Calculates time elapsed since last update
Maintains a sequential index to track updates
The resulting TickData structure serves as the fundamental building block for all candle generation.
State Management Architecture
The library employs a sophisticated state management system using varip variables, which persist across executions within the same bar. This creates a hybrid programming paradigm that's different from standard Pine Script's bar-by-bar model.
For chart-time candles, the core state transition logic is:
// Real-time update of current candle
candle_data := Candle.new(Open, High, Low, Close, polarity, series_index, candle_color)
candles.set(0, candle_data)
// When a new bar starts, preserve the previous candle
if clear_state
candles.insert(1, candle_data)
price.clear()
// Reset state for new candle
Open := Close
price.push(Open)
series_index += 1
This pattern of updating index 0 in real-time while inserting completed candles at index 1 creates an elegant solution for maintaining both current state and historical data.
Custom Timeframe Implementation
The custom timeframe system manages its own time boundaries independent of chart bars:
bool clear_state = switch settings.sample_type
SampleType.Ticks => cumulative_series_idx >= settings.number_of_ticks
SampleType.Time => cumulative_time_delta >= settings.number_of_seconds
This dual-clock system synchronizes two time domains:
Pine's execution clock (bar-by-bar processing)
The custom timeframe clock (tick or time-based)
The library carefully handles temporal discontinuities, ensuring candle formation remains accurate despite irregular tick arrival or market gaps.
Advanced Usage Techniques
1. Creating Custom Indicators with Real-Time Candles
To develop indicators that process real-time data within the current bar:
// Get real-time candles for your data
Candle rsi_candles = candle_array(ta.rsi(close, 14))
// Calculate indicator values based on candle properties
float signal = ta.ema(rsi_candles.first().source(Source.Close), 9)
// Detect patterns that occur within the bar
bool divergence = close > close and rsi_candles.first().Close < rsi_candles.get(1).Close
2. Working with Custom Timeframes and Plotting
For maximum flexibility when visualizing custom timeframe data:
// Create custom timeframe candles
CandleCTF volume_candles = ctf_candles_array(
source = volume,
candle_type = CandleType.candlestick,
sample_type = SampleType.Time,
number_of_seconds = 60
)
// Convert specific candle properties to float arrays
float volume_closes = volume_candles.candle_ctf_to_float(Source.Close)
// Calculate derived values
float volume_ema = volume_candles.ctf_ema(14)
// Create custom visualization
volume_candles.draw_ctf_candles_time()
volume_ema.draw_ctf_line_time(line_color = color.orange)
3. Creating Hybrid Timeframe Analysis
One powerful application is comparing indicators across multiple timeframes:
// Standard chart timeframe RSI
float chart_rsi = ta.rsi(close, 14)
// Custom 5-second timeframe RSI
CandleCTF ctf_candles = ctf_candles_array(
source = close,
candle_type = CandleType.candlestick,
sample_type = SampleType.Time,
number_of_seconds = 5
)
float fast_rsi_array = ctf_candles.candle_ctf_to_float(Source.Close)
float fast_rsi = fast_rsi_array.first()
// Generate signals based on divergence between timeframes
bool entry_signal = chart_rsi < 30 and fast_rsi > fast_rsi_array.get(1)
Final Notes
This library represents an advanced implementation of real-time data processing within Pine Script's constraints. By creating a reactive programming framework for handling continuous data streams, it enables sophisticated analysis typically only available in dedicated trading platforms.
The design principles employed—including state management, temporal processing, and object-oriented architecture—can serve as patterns for other advanced Pine Script development beyond this specific application.
------------------------
Library "real_time_candles"
A comprehensive library for creating real-time candles with customizable timeframes and sampling methods.
Supports both chart-time and custom-time candles with options for candlestick and Heikin-Ashi visualization.
Allows for tick-based or time-based sampling with moving average overlay capabilities.
get_tick(source, na_replace)
Captures the current price as a tick data point
Parameters:
source (float) : Optional - Price source to sample (defaults to close)
na_replace (float) : Optional - Value to use when source is na
Returns: TickData structure containing price, time since last update, and sequential index
candle_array(source, candle_type, sync_start, bullish_color, bearish_color)
Creates an array of candles based on price updates
Parameters:
source (float) : Optional - Price source to sample (defaults to close)
candle_type (simple CandleType) : Optional - Type of candle chart to create (candlestick or Heikin-Ashi)
sync_start (simple bool) : Optional - Whether to synchronize with the start of a new bar
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
Returns: Array of Candle objects ordered with most recent at index 0
candle_series(source, candle_type, wait_for_sync, bullish_color, bearish_color)
Provides a single candle based on the latest price data
Parameters:
source (float) : Optional - Price source to sample (defaults to close)
candle_type (simple CandleType) : Optional - Type of candle chart to create (candlestick or Heikin-Ashi)
wait_for_sync (simple bool) : Optional - Whether to wait for a new bar before starting
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
Returns: A single Candle object representing the current state
candle_tuple(source, candle_type, wait_for_sync, bullish_color, bearish_color)
Provides candle data as a tuple of OHLC values
Parameters:
source (float) : Optional - Price source to sample (defaults to close)
candle_type (simple CandleType) : Optional - Type of candle chart to create (candlestick or Heikin-Ashi)
wait_for_sync (simple bool) : Optional - Whether to wait for a new bar before starting
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
Returns: Tuple representing current candle values
method source(self, source, na_replace)
Extracts a specific price component from a Candle
Namespace types: Candle
Parameters:
self (Candle)
source (series Source) : Type of price data to extract (Open, High, Low, Close, or composite values)
na_replace (float) : Optional - Value to use when source value is na
Returns: The requested price value from the candle
method source(self, source)
Extracts a specific price component from a CandleCTF
Namespace types: CandleCTF
Parameters:
self (CandleCTF)
source (simple Source) : Type of price data to extract (Open, High, Low, Close, or composite values)
Returns: The requested price value from the candle as a varip
method candle_ctf_to_float(self, source)
Converts a specific price component from each CandleCTF to a float array
Namespace types: array
Parameters:
self (array)
source (simple Source) : Optional - Type of price data to extract (defaults to Close)
Returns: Array of float values extracted from the candles, ordered with most recent at index 0
method ctf_ema(self, ema_period)
Calculates an Exponential Moving Average for a CandleCTF array
Namespace types: array
Parameters:
self (array)
ema_period (simple float) : Period for the EMA calculation
Returns: Array of float values representing the EMA of the candle data, ordered with most recent at index 0
method draw_ctf_candles_time(self, sample_type, number_of_ticks, number_of_seconds, timezone)
Renders custom timeframe candles using bar time coordinates
Namespace types: array
Parameters:
self (array)
sample_type (simple SampleType) : Optional - Method for sampling data (Time or Ticks), used for tooltips
number_of_ticks (simple int) : Optional - Number of ticks per candle (used when sample_type is Ticks), used for tooltips
number_of_seconds (simple float) : Optional - Time duration per candle in seconds (used when sample_type is Time), used for tooltips
timezone (simple int) : Optional - Timezone offset from UTC (-12 to +12), used for tooltips
Returns: void - Renders candles on the chart using time-based x-coordinates
method draw_ctf_candles_index(self, sample_type, number_of_ticks, number_of_seconds, timezone)
Renders custom timeframe candles using bar index coordinates
Namespace types: array
Parameters:
self (array)
sample_type (simple SampleType) : Optional - Method for sampling data (Time or Ticks), used for tooltips
number_of_ticks (simple int) : Optional - Number of ticks per candle (used when sample_type is Ticks), used for tooltips
number_of_seconds (simple float) : Optional - Time duration per candle in seconds (used when sample_type is Time), used for tooltips
timezone (simple int) : Optional - Timezone offset from UTC (-12 to +12), used for tooltips
Returns: void - Renders candles on the chart using index-based x-coordinates
method draw_ctf_line_time(self, source, line_size, line_color)
Renders a line representing a price component from the candles using time coordinates
Namespace types: array
Parameters:
self (array)
source (simple Source) : Optional - Type of price data to extract (defaults to Close)
line_size (simple int) : Optional - Width of the line
line_color (simple color) : Optional - Color of the line
Returns: void - Renders a connected line on the chart using time-based x-coordinates
method draw_ctf_line_time(self, line_size, line_color)
Renders a line from a varip float array using time coordinates
Namespace types: array
Parameters:
self (array)
line_size (simple int) : Optional - Width of the line, defaults to 2
line_color (simple color) : Optional - Color of the line
Returns: void - Renders a connected line on the chart using time-based x-coordinates
method draw_ctf_line_index(self, source, line_size, line_color)
Renders a line representing a price component from the candles using index coordinates
Namespace types: array
Parameters:
self (array)
source (simple Source) : Optional - Type of price data to extract (defaults to Close)
line_size (simple int) : Optional - Width of the line
line_color (simple color) : Optional - Color of the line
Returns: void - Renders a connected line on the chart using index-based x-coordinates
method draw_ctf_line_index(self, line_size, line_color)
Renders a line from a varip float array using index coordinates
Namespace types: array
Parameters:
self (array)
line_size (simple int) : Optional - Width of the line, defaults to 2
line_color (simple color) : Optional - Color of the line
Returns: void - Renders a connected line on the chart using index-based x-coordinates
plot_ctf_tick_candles(source, candle_type, number_of_ticks, timezone, tied_open, ema_period, bullish_color, bearish_color, line_width, ema_color, use_time_indexing)
Plots tick-based candles with moving average
Parameters:
source (float) : Input price source to sample
candle_type (simple CandleType) : Type of candle chart to display
number_of_ticks (simple int) : Number of ticks per candle
timezone (simple int) : Timezone offset from UTC (-12 to +12)
tied_open (simple bool) : Whether to tie open price to close of previous candle
ema_period (simple float) : Period for the exponential moving average
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
line_width (simple int) : Optional - Width of the moving average line, defaults to 2
ema_color (color) : Optional - Color of the moving average line
use_time_indexing (simple bool) : Optional - When true the function will plot with xloc.time, when false it will plot using xloc.bar_index
Returns: void - Creates visual candle chart with EMA overlay
plot_ctf_tick_candles(source, candle_type, number_of_ticks, timezone, tied_open, bullish_color, bearish_color, use_time_indexing)
Plots tick-based candles without moving average
Parameters:
source (float) : Input price source to sample
candle_type (simple CandleType) : Type of candle chart to display
number_of_ticks (simple int) : Number of ticks per candle
timezone (simple int) : Timezone offset from UTC (-12 to +12)
tied_open (simple bool) : Whether to tie open price to close of previous candle
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
use_time_indexing (simple bool) : Optional - When true the function will plot with xloc.time, when false it will plot using xloc.bar_index
Returns: void - Creates visual candle chart without moving average
plot_ctf_time_candles(source, candle_type, number_of_seconds, timezone, tied_open, ema_period, bullish_color, bearish_color, line_width, ema_color, use_time_indexing)
Plots time-based candles with moving average
Parameters:
source (float) : Input price source to sample
candle_type (simple CandleType) : Type of candle chart to display
number_of_seconds (simple float) : Time duration per candle in seconds
timezone (simple int) : Timezone offset from UTC (-12 to +12)
tied_open (simple bool) : Whether to tie open price to close of previous candle
ema_period (simple float) : Period for the exponential moving average
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
line_width (simple int) : Optional - Width of the moving average line, defaults to 2
ema_color (color) : Optional - Color of the moving average line
use_time_indexing (simple bool) : Optional - When true the function will plot with xloc.time, when false it will plot using xloc.bar_index
Returns: void - Creates visual candle chart with EMA overlay
plot_ctf_time_candles(source, candle_type, number_of_seconds, timezone, tied_open, bullish_color, bearish_color, use_time_indexing)
Plots time-based candles without moving average
Parameters:
source (float) : Input price source to sample
candle_type (simple CandleType) : Type of candle chart to display
number_of_seconds (simple float) : Time duration per candle in seconds
timezone (simple int) : Timezone offset from UTC (-12 to +12)
tied_open (simple bool) : Whether to tie open price to close of previous candle
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
use_time_indexing (simple bool) : Optional - When true the function will plot with xloc.time, when false it will plot using xloc.bar_index
Returns: void - Creates visual candle chart without moving average
plot_ctf_candles(source, candle_type, sample_type, number_of_ticks, number_of_seconds, timezone, tied_open, ema_period, bullish_color, bearish_color, enable_ema, line_width, ema_color, use_time_indexing)
Unified function for plotting candles with comprehensive options
Parameters:
source (float) : Input price source to sample
candle_type (simple CandleType) : Optional - Type of candle chart to display
sample_type (simple SampleType) : Optional - Method for sampling data (Time or Ticks)
number_of_ticks (simple int) : Optional - Number of ticks per candle (used when sample_type is Ticks)
number_of_seconds (simple float) : Optional - Time duration per candle in seconds (used when sample_type is Time)
timezone (simple int) : Optional - Timezone offset from UTC (-12 to +12)
tied_open (simple bool) : Optional - Whether to tie open price to close of previous candle
ema_period (simple float) : Optional - Period for the exponential moving average
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
enable_ema (bool) : Optional - Whether to display the EMA overlay
line_width (simple int) : Optional - Width of the moving average line, defaults to 2
ema_color (color) : Optional - Color of the moving average line
use_time_indexing (simple bool) : Optional - When true the function will plot with xloc.time, when false it will plot using xloc.bar_index
Returns: void - Creates visual candle chart with optional EMA overlay
ctf_candles_array(source, candle_type, sample_type, number_of_ticks, number_of_seconds, tied_open, bullish_color, bearish_color)
Creates an array of custom timeframe candles without rendering them
Parameters:
source (float) : Input price source to sample
candle_type (simple CandleType) : Type of candle chart to create (candlestick or Heikin-Ashi)
sample_type (simple SampleType) : Method for sampling data (Time or Ticks)
number_of_ticks (simple int) : Optional - Number of ticks per candle (used when sample_type is Ticks)
number_of_seconds (simple float) : Optional - Time duration per candle in seconds (used when sample_type is Time)
tied_open (simple bool) : Optional - Whether to tie open price to close of previous candle
bullish_color (color) : Optional - Color for bullish candles
bearish_color (color) : Optional - Color for bearish candles
Returns: Array of CandleCTF objects ordered with most recent at index 0
Candle
Structure representing a complete candle with price data and display properties
Fields:
Open (series float) : Opening price of the candle
High (series float) : Highest price of the candle
Low (series float) : Lowest price of the candle
Close (series float) : Closing price of the candle
polarity (series bool) : Boolean indicating if candle is bullish (true) or bearish (false)
series_index (series int) : Sequential index identifying the candle in the series
candle_color (series color) : Color to use when rendering the candle
ready (series bool) : Boolean indicating if candle data is valid and ready for use
TickData
Structure for storing individual price updates
Fields:
price (series float) : The price value at this tick
time_delta (series float) : Time elapsed since the previous tick in milliseconds
series_index (series int) : Sequential index identifying this tick
CandleCTF
Structure representing a custom timeframe candle with additional time metadata
Fields:
Open (series float) : Opening price of the candle
High (series float) : Highest price of the candle
Low (series float) : Lowest price of the candle
Close (series float) : Closing price of the candle
polarity (series bool) : Boolean indicating if candle is bullish (true) or bearish (false)
series_index (series int) : Sequential index identifying the candle in the series
open_time (series int) : Timestamp marking when the candle was opened (in Unix time)
time_delta (series float) : Duration of the candle in milliseconds
candle_color (series color) : Color to use when rendering the candle
footprint_typeLibrary "footprint_type"
Contains all types for calculating and rendering footprints
Inputs
Inputs objects
Fields:
inbalance_percent (series int) : percentage coefficient to determine the Imbalance of price levels
stacked_input (series int) : minimum number of consecutive Imbalance levels required to draw extended lines
show_summary_footprint (series bool) : bool input for show summary footprint
procent_volume_area (series int) : definition size Value area
show_vah (series bool) : bool input for show VAH
show_poc (series bool) : bool input for show POC
show_val (series bool) : bool input for show VAL
color_vah (series color) : color VAH line
color_poc (series color) : color POC line
color_val (series color) : color VAL line
show_volume_profile (series bool)
new_imbalance_cond (series bool) : bool input for setup alert on new imbalance buy and sell
new_imbalance_line_cond (series bool) : bool input for setup alert on new imbalance line buy and sell
stop_past_imbalance_line_cond (series bool) : bool input for setup alert on stop past imbalance line buy and sell
Constants
Constants all Constants objects
Fields:
imbalance_high_char (series string) : char for printing buy imbalance
imbalance_low_char (series string) : char for printing sell imbalance
color_title_sell (series color) : color for footprint sell
color_title_buy (series color) : color for footprint buy
color_line_sell (series color) : color for sell line
color_line_buy (series color) : color for buy line
color_title_none (series color) : color None
Calculation_data
Calculation_data data for calculating
Fields:
detail_open (array) : array open from calculation timeframe
detail_high (array) : array high from calculation timeframe
detail_low (array) : array low from calculation timeframe
detail_close (array) : array close from calculation timeframe
detail_vol (array) : array volume from calculation timeframe
previos_detail_close (array) : array close from calculation timeframe
isBuyVolume (series bool) : attribute previosly bar buy or sell
Footprint_row
Footprint_row objects one footprint row
Fields:
price (series float) : row price
buy_vol (series float) : buy volume
sell_vol (series float) : sell volume
imbalance_buy (series bool) : attribute buy inbalance
imbalance_sell (series bool) : attribute sell imbalance
buy_vol_box (series box) : for ptinting buy volume
sell_vol_box (series box) : for printing sell volume
buy_vp_box (series box) : for ptinting volume profile buy
sell_vp_box (series box) : for ptinting volume profile sell
row_line (series label) : for ptinting row price
empty (series bool) : = true attribute row with zero volume buy and zero volume sell
Value_area
Value_area objects for calculating and printing Value area
Fields:
vah_price (series float) : VAH price
poc_price (series float) : POC price
val_price (series float) : VAL price
vah_label (series label) : label for VAH
poc_label (series label) : label for POC
val_label (series label) : label for VAL
vah_line (series line) : line for VAH
poc_level (series line) : line for POC
val_line (series line) : line for VAL
Imbalance_line_var_object
Imbalance_line_var_object var objects printing and calculation imbalance line
Fields:
cum_buy_line (array) : line array for saving all history buy imbalance line
cum_sell_line (array) : line array for saving all history sell imbalance line
Imbalance_line
Imbalance_line objects printing and calculation imbalance line
Fields:
buy_price_line (array) : float array for saving buy imbalance price level
sell_price_line (array) : float array for saving sell imbalance price level
var_imba_line (Imbalance_line_var_object) : var objects this type
Footprint_info_var_object
Footprint_info_var_object var objects for info printing
Fields:
cum_delta (series float) : var delta volume
cum_total (series float) : var total volume
cum_buy_vol (series float) : var buy volume
cum_sell_vol (series float) : var sell volume
cum_info (series table) : table for ptinting
Footprint_info
Footprint_info objects for info printing
Fields:
var_info (Footprint_info_var_object) : var objects this type
total (series label) : total volume
delta (series label) : delta volume
summary_label (series label) : label for ptinting
Footprint_bar
Footprint_bar all objects one bar with footprint
Fields:
foot_rows (array) : objects one row footprint
val_area (Value_area) : objects Value area
imba_line (Imbalance_line) : objects imbalance line
info (Footprint_info) : objects info - table,label and their variable
row_size (series float) : size rows
total_vol (series float) : total volume one footprint bar
foot_buy_vol (series float) : buy volume one footprint bar
foot_sell_vol (series float) : sell volume one footprint bar
foot_max_price_vol (map) : map with one value - price row with max volume buy + sell
calc_data (Calculation_data) : objects with detail data from calculation resolution
Support_objects
Support_objects support object for footprint calculation
Fields:
consts (Constants) : all consts objects
inp (Inputs) : all input objects
bar_index_show_condition (series bool) : calculation bool value for show all objects footprint
row_line_color (series color) : calculation value - color for row price
.srb suiteThe essential suite Indicator.
that are well integrated to ensure visibility of essential items for trading.
it is very cumbersome to put symbol in the Tradingview chart and combine essential individual indicators one by one.
Moreover even with such a combination, the chart is messy and visibility is not good.
This is because each indicator is not designed with the others in mind.
This suite was developed as a composite-solution to that situation, and will make you happy.
designed to work in the same pane with open-source indicator by default.
Recommended visual order ; Back = .srb suite, Front = .srb suite vol & info
individually turn on/off only what you need on the screen.
BTC-agg. Volume
4 BTC-spot & 4 BTC-PERP volume aggregated.
It might helps you don't miss out on important volume flows.
Weighted to spot trading volume when using PERP+spot volume .
If enabled, BTC-agg.Vol automatically applied when selecting BTC-pair.
--> This is used in calculations involving volumes, such as VWAP.
Moving Average
1 x JMA trend ribbon ; Accurately follow short-term trend changes.
3 x EMA ribbon ; zone , not the line.
MA extension line ; It provide high visibility to recognize the direction of the MA.
SPECIAL TOOLS
VWAP with Standard Deviation Bands
VWAP ruler
BB regular (Dev. 2.0, 2.5)
BB Extented (Dev. 2.5, 3.0, 3.5)
Fixed Range Volume Profile ; steamlined one, performace tuned & update.
SPECIAL TOOLS - Auto Fibonacci Retracement - New GUI
'built-in auto FBR ' has been re-born
It shows - retracement Max top/ min bottom ; for higher visibility
It shows - current retracement position ; for higher visibility
The display of the Fib position that exceeds the regular range is auto-determined according to the price.
tradingview | chart setting > Appearance > Top margin 0%, Bottom margin 0% for optimized screen usage
tradingview | chart setting > Appearance > Right margin 57
.srb suite vol & info --> Visual Order > Bring to Front
.srb suite vol & info --> Pin to scale > No scale (Full-screen)
Visual order ; Back = .srb suite, Front = .srb suite vol & info
1. Fib.Retracement core is from tradingview built-in FBR ---> upgrade new-type GUI, and performance tuned.
2. Fixed-range volume-profile core is from the open-source one ---> some update & perf.tuned.
---------------------------------------------------------------------------------------------------------------------------------------
if you have any questions freely contact to me by message on tradingview.
but please understand that responses may be quite late.
Special thanks to all of contributors of community.
The script may be freely distributed under the MIT license.
VPoC per barThis study prints the current bar VPoC as an horizontal line.
It's aimed originally at BTCUSDT pair and 15m timeframe.
HOW IT WORKS
Zoom In mode: This is the default mode.
The study zooms in into the latest 15 1-minute bar candles in order to calculate the 15 minute candle VPoC.
Zoom Out mode: The VPoC from the last n bars from the current timeframe that match desired timeframe is shown on each bar.
In either case you are recommended to click on the '...' button associated to this study
and select 'Visual Order. Bring to Front.' so that it's properly shown in your chart.
HOW IT WORKS - Zoom In mode
Make sure that '(VP) Zoom into the VP timeframe' setting is set to true.
Choose the zoomed in timeframe where to calculate VPoC from thanks to the '(VP) Zoomed timeframe {1 minute}' setting.
Change '(VP) Zoomed in timeframe bars per current timeframe bar {15}' to its appropiated value. You just need to divide the current timeframe minutes per the zoomed in timeframe minutes per bar. E.g. If you are in 60 minute timeframe and you want to zoom in into 5 minute timeframe: 60 / 5 = 12 . You will write 12 here.
HOW IT WORKS - Zoom Out mode
Make sure that '(VP) Zoom into the VP timeframe' setting is set to false.
If you are using the Zoom out mode you might want to set '(VP) Print VPoC price as discrete lines {True}' to false.
Either choose the zoommed out timeframe where to calculate VPoC from thanks to the '(VP) Zoomed timeframe {1 minute}' setting or turn on the '(VP) Use number of bars (not VP timeframe)' setting in order to use '(VP) Number of bars {100}' as a custom number of bars.
WARNING - Zoom In mode last bar
The way that PineScript handles security function in last bar might result on the last bar not being accurate enough.
SETTINGS
__ SETTINGS - Volume Profile
(VP) Zoomed timeframe {1 minute}: Timeframe in which to zoom in or zoom out to calculate an accurate VPoC for the current timeframe.
(VP) Zoomed in timeframe bars per current timeframe bar {15}: Check 'HOW IT WORKS - Zoom In mode' above. Note : It is only used in 'Zoom in' mode.
(VP) Number of bars {100}: If 'Use number of bars (not VP timeframe)' is turned on this setting is used to calculate session VPoC. Note : It is only used in 'Zoom out' mode.
(VP) Price levels {24}: Price levels for calculating VPoC.
__ SETTINGS - MAIN TURN ON/OFF OPTIONS
(VP) Print VPoC price {True}: Show VPoC price
(VP) Zoom into the VP timeframe: When set to true the VPoC is calculated by zooming into the lower timeframe. When set to false a higher timeframe (or number of bars) is used.
(VP) Realtime Zoom in (Beta): Enable real time zoom for the last bar. It's beta because it would only work with zoomed in timeframe under 60 minutes. And when ratio between zoomout and zoomin is less than 60. Note : It is only used in 'Zoom in' mode.
(VP) Use number of bars (not VP timeframe): Uses 'Number of bars {100}' setting instead of 'Volume Profile timeframe' setting for calculating session VPoC. Note : It is only used in 'Zoom out' mode.
(VP) Print VPoC price as discrete lines {True}: When set to true the VPoC is shown as an small line in the center of each bar. When set to the false the VPoC line is printed as a normal line.
__ SETTINGS - EXTRA
(VP) VPoC color: Change the VPoC color
(VP) VPoC line width {1}: Change VPoC line width (in pixels).
(VP) Use number of bars (not VP timeframe): Uses 'Number of bars {100}' setting instead of 'Volume Profile timeframe' setting for calculating session VPoC. Note : It is only used in 'Zoom out' mode.
(VP) Print VPoC price as discrete lines {True}: When set to true the VPoC is shown as an small line in the center of each bar. When set to the false the VPoC line is printed as a normal line.
CREDITS
I have reused and adapted some code from
"Poor man's volume profile" study
which it's from TradingView IldarAkhmetgaleev user.
FRAMA Channel [JopAlgo]FRAMA Channel — let the market tell you how fast to move
Most moving averages make you pick a speed and hope it fits every regime. FRAMA (Fractal Adaptive Moving Average, popularized by John Ehlers) does the opposite: it adapts its smoothing to market structure. When price action is “trendy” (more directional, less jagged), FRAMA speeds up; when it’s choppy (more fractal noise), FRAMA slows down and filters the rubble.
FRAMA Channel wraps that adaptive core with a volatility channel and clean color logic so you can read trend, mean-reversion windows, and breakouts in one glance—on any timeframe.
What you’re seeing (plain-English tour)
FRAMA midline (Filt): the adaptive average. It’s computed from a fractal dimension of price over Length (N).
Trendy tape → lower fractal dimension → FRAMA tracks price tighter.
Choppy tape → higher fractal dimension → FRAMA smooths harder.
Channel bands (Filt ± distance × volatility): the “breathing room.” Volatility here is a long lookback average of (high − low).
Upper band = potential resistance in down/neutral or trend-walk path in uptrends.
Lower band = mirror logic for shorts.
Color logic (simple and strict):
Green when price breaks above the upper band → bullish regime (momentum present).
Red when price breaks below the lower band → bearish regime.
White when price crosses the FRAMA midline → neutral/reset.
Optional candle coloring: toggle Color Candles to tint the chart itself with the regime color—handy for quick reads.
(When you add screenshots: image #1 should label FRAMA, bands, and the three colors in a small trend + pullback. Image #2 can show a “squeeze → expansion” sequence: channel tightens, then price breaks and walks the band.)
How it’s built (without the jargon)
The script measures three ranges over your Length (N): two half-windows and the full window.
It converts those into a fractal dimension (Dimen). That number says “how zig-zaggy” price is right now.
It turns Dimen into an alpha (smoothing factor): alpha = exp(−4.6 × (Dimen − 1)), clamped so it never explodes or flatlines.
It updates FRAMA each bar using that alpha.
It builds bands using a long average of (high − low) multiplied by your Bands Distance setting.
It changes color only on confirmed bar events:
hlc3 crosses above the upper band → green
hlc3 crosses below the lower band → red
close crosses the midline → white
Result: a channel that tightens in balance, widens in trend, and doesn’t flicker on partial bars.
How to use FRAMA Channel on any timeframe
Same framework everywhere. Your job is to choose where to act (objective levels) and let FRAMA tell you trend/mean-reversion context and breakout quality.
Scalping (1–5m)
Pullback-to-midline (trend): When color is green, buy pullbacks that hold at/above the midline; when red, short pullbacks that fail at/below it.
Invalidation: a white flip (midline cross back) right after entry → tighten or bail.
Squeeze → break: A narrowing channel often precedes a move. Only chase the break if color flips to green/red and the first pullback holds the band/midline.
Intraday (15m–1H)
Trend rides: In green/red, expect price to walk the outer band. Entries on midline kisses are cleaner than chasing the band itself.
Balance fades: In white (neutral) with a tight channel, fade outer band → midline—but only at a real level (see “Pairing” below).
Swing (2H–4H)
Regime compass: Color changes that stick (several bars) often mark swing regime shifts. Combine with Weekly/Event AVWAP and composite VP levels.
Add/Trim: In an uptrend, add on midline holds; trim as the channel widens and price spikes beyond the upper band into HVNs.
Position (1D–1W)
Context first: A persistent green weekly channel is constructive; a persistent red is distributive.
Patience: Wait for midline retests at higher-TF levels rather than chasing outer-band prints.
Entries, exits, and risk (keep it simple)
Continuation entry (trend):
Color already green/red.
Price pulls back to FRAMA midline (or shallowly toward it) and holds.
Take the trend side.
Stop: beyond the opposite side of the midline or behind local structure.
Targets: your Volume Profile HVN/POC or prior swing, not the band alone.
Breakout entry:
Channel had tightened; price breaks a key level.
Color flips green/red and the first retest holds.
Enter with the break.
Avoid: breaks that flip color but immediately white-flip on the next bar.
Mean-reversion entry (balance):
Color white and channel tight.
At a VP edge (VAL/VAH), fade outer band → midline.
Stop: just outside the band; Exit: at midline/POC.
Settings that actually matter (and how to tune them)
Length (N) — default 26
Controls how FRAMA “reads” structure.
Shorter (14–20): faster, more responsive (good for scalps/intraday), more flips in chop.
Longer (30–40): steadier (good for swings/position), slower to acknowledge new trends.
Bands Distance — default 1.5
Scales the channel width.
If you’re constantly tagging bands, increase slightly (1.7–2.0).
If nothing ever reaches the band, decrease (1.2–1.4) to make context meaningful.
Color Candles — on/off
Great for quick regime reads. If your chart feels too busy, leave bands colored and turn candle coloring off.
Warm-up note: FRAMA references N bars. Right after switching timeframes or symbols, give it N–2N bars to settle before you judge the current state.
(You may see an input named “Signals Data” in this version; it’s reserved for future enhancements.)
What to look for (pattern cheat sheet)
Walk-the-band: After a green/red flip, price hugs the outer band while the midline slopes. Ride pullbacks to the midline, don’t fade the band.
Squeeze → Expansion: Channel pinches, then color flips and bands widen—that’s the move. The first midline retest is your best entry.
False break tell: Brief color flip to green/red that immediately reverts to white on the next bar—skip chasing; plan for a reclaim.
Midline reclaims: In chop, repeated white↔green/white↔red flips say “mean reversion”; stay tactical and target the midline/POC.
Pairing FRAMA Channel with other tools
Cumulative Volume Delta v1 (CVDv1):
FRAMA tells you trend/mean-reversion context; CVDv1 tells you flow quality.
Breakout quality: FRAMA flips green and CVDv1 ALIGN = OK, Imbalance strong, Absorption ≠ red → higher odds the break sticks.
If Absorption is red on a FRAMA green flip, do not chase—wait for retest or look for a fail/reclaim.
Volume Profile v3.2:
Use VAH/VAL/LVNs/POC for where.
Green + VAL retest → rotate toward POC/HVN.
Red + VAH rejection → rotate back to POC.
LVN + green flip → expect fast travel toward the next HVN; set targets there.
Anchored VWAP :
Treat AVWAP as fair-value rails.
AVWAP reclaim + FRAMA green → excellent trend-resume entry.
AVWAP rejection + FRAMA red → high-quality short; use midline as your risk guide.
Common pitfalls this helps you avoid
Chasing every poke: FRAMA’s white → green/red state change helps you wait for confirmation (or a retest) instead of reacting to the first wick.
Fading a real trend: A sloped midline with price walking the band is telling you not to fight it.
Stops too tight: In expansion, give the trade room to the midline or local structure, not just inside the channel.
Practical defaults to start with
Length: 26
Bands Distance: 1.5
Color Candles: on (turn off if your chart is busy)
Timeframes: works out of the box on 15m–4H; for 1–5m try Length=20; for daily swings try Length=34–40.
Open source & disclaimer
This indicator is published open source so traders can learn, tweak, and build rules they trust. No tool guarantees outcomes; risk management is essential.
Disclaimer — Not Financial Advice.
The “FRAMA Channel ” indicator and this description are provided for educational purposes only and do not constitute financial or investment advice. Trading involves risk, including possible loss of capital. makes no warranties and assumes no responsibility for any trading decisions or outcomes resulting from the use of this script. Past performance is not indicative of future results.
Use FRAMA Channel for context (trend vs balance, squeeze vs expansion), Volume Profile v3.2 and Anchored VWAP for locations, and CVDv1 for flow quality. That trio keeps your trades selective and your rules consistent on any timeframe.
Elliott Wave Oscillator [JopAlgo]Elliott Wave Oscillator — a simple impulse meter that tells you when the move has “real push”
If price is the story, impulse is the emotion behind each chapter. The Elliott Wave Oscillator (EWO) is a clean way to see that emotion: it’s just the difference between a fast and a slow moving average. When the fast MA pulls away from the slow MA, the histogram grows; when they come back together, it shrinks. Above zero = bullish impulse; below zero = bearish impulse.
EWO keeps the math honest and the read effortless:
Choose SMA, EMA, or a volume-weighted average for each side (the “VWAP” option here uses a rolling VWMA over the chosen length).
A zero line anchors the read (bull vs bear).
Bars color by slope: rising = building momentum, falling = momentum fading.
(For screenshots: image #1 label the zero line, rising/falling bars, and a zero cross. Image #2 show a strong impulse leg hugging one side of zero, then fading into a pullback.)
What you’re seeing (and how it’s built)
Short MA (default 5) and Long MA (default 35) are computed using your selected MA Type (SMA, EMA, or rolling volume-weighted).
EWO = Short MA − Long MA.
EWO > 0: fast MA above slow → bullish impulse.
EWO < 0: fast MA below slow → bearish impulse.
Histogram colors:
Green bar: EWO increasing vs previous bar (momentum building).
Red bar: EWO decreasing (momentum waning).
Alerts: fire when EWO crosses the zero line (bullish or bearish “trend shift” heads-up).
New to this? Think of EWO as a throttle: above zero the engine is pushing forward; below zero it’s pushing backward. The height shows how hard it’s pushing; the color shows if that push is growing or fading right now.
How to use EWO on any timeframe
Same framework everywhere—what changes is your location and targets (from your other tools).
Scalping (1–5m)
Breakout confirmation: Only chase a micro-break if EWO flips above zero and grows green as price leaves a level (VAL/LVN/AVWAP). If it flips then immediately shrinks red, that’s your “don’t chase” warning.
Pullback timing: In a quick trend, wait for EWO to dip but stay above zero, then turn green again. That flip is often your pullback end.
Intraday (15m–1H)
Continuation filter: After a level break, ride as long as EWO stays on your side of zero. The first red bar while still above zero is a cue to partial or tighten stops.
Failed break tell: A poke through VAH/VAL with EWO still near zero (no expansion) is often a trap. Prefer retest/reclaim trades.
Swing (2H–4H)
Impulse leg ID: Strong trends show an EWO “bulge” (wide, mostly green bars above zero for longs). When that bulge shrinks back toward zero, look for mean-reversion to AVWAP/POC before the next leg.
Divergence (lightweight): Price makes a higher high, but EWO tops at a lower peak → impulse is weaker; plan for retrace to value.
Position (1D–1W)
Regime bias: Weeks where EWO lives above zero are net constructive; below zero are net distributive. Use that as a backdrop for adds/reductions at your higher-TF levels (Weekly AVWAP, composite VAL/VAH).
Entries, exits, and risk (simple rules)
Entry: At your level (from VP/AVWAP), take the side where EWO is on the correct side of zero and turning green (for longs) or red→green below zero for shorts? Careful—below zero, red means waning bear impulse. For shorts, you want EWO < 0 and increasing in magnitude (i.e., more negative) which still paints red in this script? Here’s the practical translation:
Longs: EWO > 0 and rising (green bar).
Shorts: EWO < 0 and falling (more negative vs prior bar). In this script, that also paints red—which is correct for building bearish impulse.
Manage: If your long was driven by EWO above zero, consider reducing when bars turn red repeatedly or EWO rolls back toward zero at your target node.
Invalidation: A zero cross against you after entry is a hard warning—tighten or exit unless higher-TF context strongly favors holding.
Stops: Place beyond the price level/structure you used, not on an EWO flip alone.
Settings that actually matter (and how to tune them)
MA Type (SMA / EMA / VWAP):
EMA: most responsive; great for scalping/fast intraday.
SMA: smoother; better for swings where you want fewer false wiggles.
VWAP (rolling VWMA): weights price by volume over your length—nice on pairs where volume behavior matters. (Note: this is a rolling VWMA, not an anchored session VWAP.)
Short/Long Lengths (default 5/35):
Shorter/faster (e.g., 4/20) → earlier flips, more noise.
Longer/slower (e.g., 8/50) → fewer but stronger signals.
Keep the ratio—something like 1:4 to 1:6—so the “bulge” is meaningful.
Zero-cross alerts: leave them on but treat as heads-up, not entries in isolation. You still want location + flow.
What to look for (pattern cheatsheet)
Impulse bulge: Wide, consecutive bars above zero (mostly green) → trend leg in progress. Expect shallow pullbacks only.
Pullback reset: After a leg, EWO shrinks but stays above zero, then flips green again → pullback likely done.
No-juice breakout: Price pokes the level but EWO stays near zero / flips red quickly → skip the chase; look for reclaim setups.
Divergence at extremes: New price high with lower EWO peak → risk of fade to value (POC/AVWAP).
Combining EWO with other tools
Cumulative Volume Delta v1 (CVDv1):
Use EWO for impulse, CVDv1 for quality. Best trades line up as:
EWO > 0 and increasing + CVDv1 ALIGN = OK + Imbalance strong + Absorption ≠ red → take the breakout/retest.
If EWO says “go” but CVDv1 flags Absorption, don’t chase.
Volume Profile v3.2:
Use VAH/VAL/LVNs/POC as where. EWO tells you if the push has fuel to leave/enter value.
Example: VAL retest with EWO turning up → rotate to POC/HVN.
Anchored VWAP:
Reclaims are higher quality when EWO flips above zero on the reclaim bar and holds green on the first pullback.
(Optional mention in screenshots: show a VAH break where EWO bulges and CVDv1 shows Alignment OK—clean continuation.)
Common pitfalls EWO helps you avoid
Buying a break with no impulse: Zero-line hugs and shrinking bars tell you the fast MA isn’t pulling away—skip.
Fading a real leg: Wide, persistent bars on one side of zero = don’t fight; use pullbacks to value instead.
Confusing volume-weighted vs anchored VWAP: The “VWAP” choice here is a rolling VWMA over the lookback, not a session/event AVWAP. Use Anchored VWAP when you need the true event-anchored line.
Practical defaults to start with
MA Type: EMA
Short/Long: 5 / 35
Timeframes: works out of the box on 15m–4H; for 1–5m try 4/20; for daily swings try 8/50.
Keep zero-cross alerts on as an attention ping; still require location + flow.
Alerts (what they mean)
Bullish EWO Signal: EWO crossed above zero → bullish impulse engaged. Look for a retest at your level with CVDv1 quality before entry.
Bearish EWO Signal: EWO crossed below zero → bearish impulse.
Open source & disclaimer
This indicator is published open source so traders can study it, tweak it, and build rules they trust. Tools inform decisions, but risk management decides outcomes.
Disclaimer — Not Financial Advice.
The “Elliott Wave Oscillator ” indicator and this description are provided for educational purposes only and do not constitute financial or investment advice. Trading involves risk, including possible loss of capital. makes no warranties and assumes no responsibility for any trading decisions or outcomes resulting from the use of this script. Past performance is not indicative of future results.
Use EWO to judge when there’s real push, Volume Profile v3.2 and Anchored VWAP for where to act, and CVDv1 to verify who’s actually pushing. That trio keeps you selective on any timeframe.
Cycle Momentum Filter [JopAlgo]Cycle Momentum Filter (CMF) — spot “when” to engage the market, on any timeframe
Markets breathe in cycles (expansion → contraction) while momentum and trend decide which moves actually travel. CMF is a compact filter that blends those ideas so you can answer two questions before you click:
Is this a good moment to take a trade? (cycle position)
If I take it, is there enough force behind the move to carry it? (momentum + trend)
CMF does not replace your levels—use it with your location tools (e.g., Volume Profile v3.2 and Anchored VWAP). It simply keeps you out of entries taken at the wrong part of the swing or against weak momentum.
(When you add screenshots: image #1 should label each sub-line and the green/yellow/red background; image #2 can show CMF turning green at VAL + AVWAP before a rotation back to POC.)
What you’re seeing (and how to read it at a glance)
CMF draws five sub-lines around a zero line, plus a background color:
Cycle Oscillator (blue): where you are in the swing. Above zero ≈ cycle crest side; below zero ≈ trough side.
ROC % (purple): short-term price acceleration. Above zero = positive momentum; below zero = negative.
MACD Histogram (orange): classic impulse measure (fast–slow EMA gap). Above zero = bullish impulse.
EWO (cyan): Elliott Wave Oscillator (EMA fast – EMA slow). Above zero = trend tilt up.
RSI-MA (gray, plotted as RSI−50): smoothed RSI relative to 50. Above zero = buyers have the relative strength.
Background color = the filter result:
Green → bullish window: cycle favors longs and momentum/trend/RS confirm.
Red → bearish window: mirror logic.
Yellow → neutral: at least one piece disagrees—do less, or wait for alignment.
For new traders: Every sub-line crossing above/below zero is a yes/no vote. Green happens only when all bullish checks are true; red when all bearish checks are true.
How CMF is built (plain-English version)
Cycle (DPO-style): CMF subtracts a displaced SMA from price to remove trend and expose the swing. Below 0 = you’re on the dip side of the cycle; above 0 = rally side.
Momentum (ROC): percent change over roc_length bars; tells you if price is actually accelerating.
Impulse (MACD hist): measures push from fast vs slow EMAs.
Trend tilt (EWO): broader drift via two EMAs (fast/slow).
Participation bias (RSI-MA): smoothed RSI relative to 50 (plotted as RSI−50 so its zero line matches the others).
The signal rules are strict AND conditions:
Bullish = cycle < 0 and ROC > 0 and MACD hist > 0 and EWO > 0 and RSI-MA > 0.
Bearish = cycle > 0 and ROC < 0 and MACD hist < 0 and EWO < 0 and RSI-MA < 0.
Otherwise Neutral.
This strictness is deliberate: it cuts a lot of low-quality entries.
Using CMF on any timeframe
The framework is the same—only your anchors/targets change as you zoom.
Scalping (1–5m)
Where: VP v3.2 VAL/VAH/LVNs or Session AVWAP.
When: take longs when CMF turns green on/after a dip to your level; shorts when it turns red on/after a pop into resistance.
Skip: yellow reads in the middle of the range; that’s chop.
Tip: on very fast pairs, require two consecutive green/red bars before entry.
Intraday (15m–1H)
Use CMF green to time pullbacks to AVWAP or VA edges in the trend direction.
In balance days, wait for CMF color + level alignment to fade back to POC.
If CMF flips yellow after entry, tighten risk; if it flips against you, consider exiting early.
Swing (2H–4H)
Treat first green after a higher-timeframe pullback to Weekly AVWAP or composite VAL as your A-setup.
If CMF stays green through the first pullback, consider adding; the opposite for red in downtrends.
Position (1D–1W)
Fewer, bigger decisions: CMF green at Monthly/Quarterly AVWAP or at composite VAL suggests rotation toward POC/HVNs; CMF red at VAH suggests mean-reversion lower.
If CMF can’t turn green/red at key retests, that’s valuable: the level likely won’t hold.
Entries, exits, and risk (simple rules)
Entry: trade at a level when CMF just flips to your side (green for longs / red for shorts).
Invalidation: if CMF reverts to yellow immediately, it’s a warning; if it flips to the opposite color, that’s your soft stop condition—tighten or exit unless higher-timeframe context argues otherwise.
Targets: use Volume Profile v3.2 (POC/HVNs) and AVWAP (mean) for logical destinations.
Don’t use CMF alone for stops; place them beyond the level or structure.
Settings that actually matter (and how to tune them)
Cycle Length (default 20): swing detection.
Shorter (10–14): quicker flips, better for scalps.
Longer (30–40): steadier cycle for swings/position.
ROC Length (default 10): momentum lookback.
Shorter: earlier yes/no, more noise.
Longer: slower, more selective.
MACD Fast/Slow (5/13) & EWO Fast/Slow (5/35): impulse and drift.
Increase slow values to calm false flips; decrease fast to react sooner.
RSI Length (14) & Smoothing (5): participation tilt.
Reduce smoothing for faster confirmation; increase to avoid whips.
Background on/off: keep it on while learning; once you’re comfortable, you can hide the background and read the lines against zero.
Tuning tip: If you trade only a few coins, optimize Cycle and ROC first; leave MACD/EWO defaults. Then decide how strict you want RSI (try RSI smoothing = 3 for faster reads).
What to look for (pattern cheatsheet)
Green at a dip-level (VAL/AVWAP) → rotate toward POC/HVN.
Red at a pop-level (VAH/AVWAP) → rotate down toward POC/HVN.
Color holds through the retest → continuation is more likely.
Color flips against the breakout → watch for failed break and reclaim.
Only one line disagrees (e.g., ROC < 0 while others > 0) → expect slower follow-through; consider waiting one bar.
Combining CMF with other tools
Volume Profile v3.2 :
Use VAH/VAL/POC/LVNs for where. CMF answers when.
Green at VAL → mean-reversion long to POC.
Red at VAH → fade to POC.
LVN breaks with green often travel quickly to the next HVN.
Anchored VWAP :
Reclaim of AVWAP + CMF turns green → higher-quality long; rejection + red → cleaner short.
Weekly AVWAP + CMF color is a reliable swing compass.
Cumulative Volume Delta v1 (CVDv1):
CMF says “now”, CVDv1 says “how good”.
Prefer CMF green when CVDv1 Alignment = OK, Imbalance strong, Absorption ≠ red.
If CMF flips green but CVDv1 shows Absorption (red), do not chase; look for a reclaim instead.
Common pitfalls CMF helps you avoid
Buying high in the cycle: CMF keeps longs to when the cycle is on the dip side and momentum/trend agree.
Forcing trades on yellow: yellow is your do-less mode—wait for alignment.
Ignoring flow at levels: CMF gives the window, but quality still matters; confirm with CVDv1.
Practical defaults to start with
Cycle 20 | ROC 10 | MACD 5/13 | EWO 5/35 | RSI 14 (smooth 5)
Works out of the box on 15m–4H.
For scalps, try Cycle 14 / ROC 7–9 / RSI smooth 3.
For daily swings, Cycle 30–34 / ROC 12–14.
Alerts (what they tell you)
Bullish Signal: CMF turned green (all bullish checks passed). Use it as a heads-up; still anchor the entry to VP/AVWAP.
Bearish Signal: CMF turned red. Same rule: wait for the level.
Open source & disclaimer
This indicator is published open source so traders can learn, tweak, and build rules they trust. Tools guide decisions; risk management decides outcomes.
Disclaimer — Not Financial Advice.
The “Cycle Momentum Filter ” indicator and this description are provided for educational purposes only and do not constitute financial or investment advice. Trading involves risk, including possible loss of capital. makes no warranties and assumes no responsibility for any trading decisions or outcomes resulting from the use of this script. Past performance is not indicative of future results.
Directional Indicator Crossovers [JopAlgo]Directional Indicator Crossovers — read trend intent at a glance, on any timeframe
Most traders ask two questions before they click: who’s in control right now and is control getting stronger or weaker?
The Directional Indicator (DI) answers the first one cleanly. +DI tracks upward directional movement; –DI tracks downward directional movement. When +DI crosses above –DI, buyers have the initiative; when –DI crosses above +DI, sellers do. DI Xover focuses on that simple, tradeable signal—the crossover—and keeps the pane uncluttered so you can layer it with your location/flow tools.
(If you add screenshots: image #1 can label +DI, –DI and a bullish crossover; image #2 can show a failed crossover in chop next to a successful one at a strong level.)
What you’re seeing (and how it’s built)
This indicator plots two lines in a separate pane:
+DI (green): smoothed positive directional movement.
–DI (red): smoothed negative directional movement.
Under the hood (length = 14 by default):
It measures how much today’s high exceeded yesterday’s high (up move) and how much today’s low fell below yesterday’s low (down move).
It keeps only the dominant side each bar (if up > down and up > 0 → up counts; vice-versa for down).
It normalizes by True Range (so moves are scaled by volatility) and smooths with RMA (so you don’t get jitter).
It raises alerts when +DI crosses above –DI (bullish) or –DI crosses above +DI (bearish).
How to read it, fast:
Cross up = buyers just took initiative.
Cross down = sellers just took initiative.
Wider distance between the lines = stronger control.
Lines braided/tight = balance/chop → expect more fake crosses.
DI is about directional control. It doesn’t tell you where to trade—that’s your location (e.g., Volume Profile, AVWAP). Use DI as a timing/confirmation layer, not as a standalone level generator.
Using DI Crossovers on any timeframe
The framework doesn’t change; only your expectations do as you zoom.
Scalping (1–5m)
Treat crossovers as triggers at levels. If price is tagging VAL/VAH/LVN (from Volume Profile v3.2) or Anchored VWAP, a fresh +DI cross up is your green light for a quick long; –DI cross up flips that logic for shorts.
Avoid taking every crossover mid-range—wait for location first.
In fast tape, require the lines to separate for 1–2 bars after the cross before you click.
Intraday (15m–1H)
In trend days, the first pullback into your level (POC/VA boundary/AVWAP) that prints a fresh +DI cross up is often the cleanest add/entry.
In balance days, fade DI crosses at edges back to POC—only if your flow tool isn’t screaming absorption against you.
Swing (2H–4H)
Look for confluence: at Weekly AVWAP or composite VAL/VAH, a DI crossover that stays separated for several bars is a solid momentum confirmation.
Failed crossover (lines recross quickly) near a level is a useful fail signal—expect a move back into value.
Position (1D–1W)
Use fewer, bigger signals: a weekly DI cross at Monthly/Quarterly AVWAP or at composite value edges marks a regime change.
Add on pullbacks when the controlling DI stays dominant (distance holds or widens).
Entries, exits, and risk (simple rules)
Entry (with level): wait for price to reach your level (e.g., VAL/VAH or AVWAP), then take the trade with the DI cross in that direction.
Filter: skip crosses when the two lines are braided (tiny separation) unless you’re trading a tight scalp with strict risk.
Exit / reduce: if your trade was based on a bullish cross, consider reducing when –DI recaptures +DI or the lines flatten at your target HVN/POC.
Stops: put them beyond the level (not just on a DI recross), but treat a fast recross as a warning to tighten.
Settings that actually matter (and how to tune them)
DI Length (default 14):
Shorter (7–10) = faster signals, more noise (good for scalps with filters).
Longer (20–30) = fewer but stronger signals (good for swing/position).
If you often see flip-flops, lengthen the setting or take crosses only at VP/AVWAP levels.
Pro tip: Define a minimum separation rule for yourself (e.g., after a cross, require the gap between +DI and –DI to increase on the next bar). You don’t need extra code for this—just enforce it visually.
What to look for (pattern cheatsheet)
Cross + hold at a level: The lines cross at your level and keep separating → high-quality entry in that direction.
Sneaky fail: Cross, then immediate recross back → treat it as a fade signal back into value (especially near VAH/VAL).
Strength confirmation: After a breakout, +DI stays above –DI on pullbacks → trend is healthy; buy dips at AVWAP/POC.
Pre-move tell: DI lines unbraid and begin diverging before price leaves a range; wait for location + trigger.
Combining DI Xover with other tools
Cumulative Volume Delta v1 (CVDv1):
Use DI for direction, and CVDv1 for quality. A bullish DI cross with ALIGN OK + Imbalance strong + no Absorption is a far better long than DI alone.
If DI crosses up but CVDv1 flags Absorption (red), don’t chase—look for the fail/reclaim instead.
Volume Profile v3.2 :
Let VP choose the battleground (POC/VAH/VAL/LVNs). Take the DI crossover at those references.
Classic: bearish DI cross at VAH → fade toward POC; bullish DI cross at VAL → rotate to POC—assuming CVDv1 isn’t vetoing with Absorption.
Anchored VWAP :
Treat reclaims/rejections of AVWAP as the location and DI cross as the trigger.
Example: price reclaims Weekly AVWAP, then on the next pullback, a +DI cross up confirms the add.
Common pitfalls this helps you avoid
Trading crosses in the middle of nowhere. DI is a trigger, not a level; wait for VP/AVWAP.
Chasing every wiggle. When the lines are braided, you’re likely in balance—expect fake crosses.
Ignoring flow. A DI cross against CVDv1 Absorption is often a trap; quality > quantity.
Practical defaults to start with
Length: 14
Timeframes: Works out of the box on 15m–4H. For 1–5m scalps try 10–12; for daily/weekly swings try 20–30.
Process: Only act on crosses at levels (VP v3.2 / Anchored VWAP), and prefer those where CVDv1 says ALIGN OK and no Absorption.
Alerts (what they tell you)
Bullish DI Crossover: +DI crossed above –DI → buyers just took initiative. Look to your chart for location and CVDv1 quality before entering.
Bearish DI Crossover: –DI crossed above +DI → sellers took initiative. Same rule: confirm at a level with flow.
Open source & disclaimer
This indicator is published open source so traders can learn, adapt, and build rules they trust. No tool guarantees outcomes; risk management remains essential.
Disclaimer — Not Financial Advice.
The “Directional Indicator Crossovers ” indicator and this description are provided for educational purposes only and do not constitute financial or investment advice. Trading involves risk, including possible loss of capital. makes no warranties and assumes no responsibility for any trading decisions or outcomes resulting from the use of this script. Past performance is not indicative of future results.
Buyer/Seller DominanceBuyer/Seller Dominance Indicator
The Buyer/Seller Dominance indicator is a sophisticated market analysis tool that combines Market Profile methodology with volume analysis to identify which side of the market is in control. It analyzes price distribution across a higher timeframe by calculating the Point of Control (POC) and Value Area, then evaluates where the current price sits relative to these key levels. The indicator processes Time Price Opportunity (TPO) data across 20 price channels to build a comprehensive volume profile of each trading session.
The dominance score is calculated using multiple factors including price position relative to POC, Value Area boundaries, volume imbalance between upper and lower profile sections, price momentum, and volume trends. This multi-factor approach provides a robust measure of market sentiment, smoothed using an EMA to filter out noise. The resulting dominance histogram visually represents whether buyers (positive values) or sellers (negative values) are controlling the market.
The indicator generates clear buy and sell signals when dominance crosses key threshold levels, with additional visual aids including background coloring to show market state (buyer/seller/neutral), overbought/oversold levels at ±50, and an information table displaying current market conditions. It's fully customizable with adjustable timeframes, sensitivity settings, Value Area percentages, and color schemes to suit different trading styles and preferences.RetryClaude can make mistakes. Please double-check responses.
VHX EMA 135/315📈 EMA 135/315 Cross Strategy – Your Trend Compass with Smart Confirmations
🔍 Core Idea
The EMA 135/315 Cross strategy is a trend-following system.
It tracks two moving averages:
EMA 135 → the “fast” line that reacts to short-term price moves
EMA 315 → the “slow” line that reacts to the bigger trend
When the fast EMA crosses above the slow EMA → market momentum is turning up → BUY signal 🟢
When the fast EMA crosses below the slow EMA → momentum is turning down → SELL signal 🔴
This gives you a clear entry trigger — no guessing, no overcomplication.
✨ On Your Chart
BUY/SELL Arrows
🟢 Green arrow = bullish cross → trend turning up
🔴 Red arrow = bearish cross → trend turning down
Trend Info Panel (Top Left)
Current Trend: BUY / SELL / Neutral
Last Cross: how many bars ago it happened
EMA Gap in %: measures the strength of the trend
Status: “Approaching” if EMAs are getting close → possible cross soon
Automatic TP/SL Levels
📈 TP line (+2% from entry)
📉 SL line (–0.5% from entry)
Saves time — you instantly see your target and protection
EMA Distance Meter
Big % gap = strong trend momentum 🚀
Small % gap = weak or sideways market ⚠️
Real-Time Alerts
You get notified when a cross happens, even if you’re away from the screen
🧠 The Logic Behind It
The EMA 135 reacts faster → it reflects short-term momentum
The EMA 315 moves slower → it reflects the main trend
When the fast EMA overtakes the slow EMA: short-term strength now aligns with the long-term trend → higher probability of a sustained move
The gap % tells you how strong the alignment is — large gap = cleaner moves, small gap = market in transition
“Approaching” status warns that the EMAs are converging, which often happens before a reversal
📊 Boosting the Strategy with Volume Analysis
The EMA cross is a strong trigger, but volume confirms the quality of the move:
High Volume + Cross → more reliable signal, as strong market participation is pushing the trend
Low Volume + Cross → caution, the move might be weak or a false breakout
💡 Tip:
Check the volume histogram or a volume-based indicator (e.g., Volume Profile, OBV).
On a BUY signal: volume should spike above the recent average.
On a SELL signal: watch for strong selling volume bars.
📍 Adding Support & Resistance for Precision
Support and resistance levels help filter out bad trades and optimize entries:
Best BUY setups:
EMA 135 crosses above EMA 315 near a known support zone
Bonus if volume confirms the move
Avoid buying directly into a strong resistance
Best SELL setups:
EMA 135 crosses below EMA 315 near a known resistance zone
Bonus if selling volume is strong
Avoid selling directly into a major support
💡 Use tools like horizontal lines, previous highs/lows, and Volume Profile nodes to spot these zones.
📈 Best Usage Practices
Timeframes
Lower timeframes (1m–5m) → more signals, but more noise → best for scalping with extra filters
Always Combine With Confirmation
EMA Cross = Trigger
Volume spike = Confirmation
S/R zone in your favor = High-probability setup
Manage Risk
Start with the built-in TP/SL
Adjust SL if volatility is higher than usual
Consider trailing stop once price moves in your favor
Avoid Sideways Markets
If EMA gap % is very small and crosses happen often → stand aside until a clear direction forms
Use Alerts
Set alerts for BUY & SELL crosses so you never miss a setup
In short:
This isn’t just an EMA cross indicator — it’s a trend system with built-in risk management, strength measurement, and pre-trade preparation. Combine it with volume confirmation and smart use of support/resistance, and you turn a simple signal into a high-probability trading edge.
Z-Score Volume with CVD Clustering Script Title:
Z-Score Volume with CVD Clustering & NY VWAP
📘 Description:
This indicator combines statistical volume analysis with order flow confirmation to detect high-probability trade zones and volume-based divergences.
📌 Components:
Z-Score of Volume: Identifies statistically significant volume surges or drops relative to a moving average baseline.
Cumulative Volume Delta (CVD): Gauges net buying vs. selling pressure using high-frequency bid/ask delta.
K-Means Clustering: Applies clustering logic to classify each bar into:
Cluster 2 – Strong Bullish: Z-Score and CVD both strong
Cluster 1 – Divergence / Bull Trap: Z-Score high, but weak CVD
Cluster 0 – Neutral / Noise: No clear alignment
Anchored VWAP (NY Session Open): Confirms market structure and institutional trend bias from 9:30 AM ET forward.
🎯 Suggested Applications:
✅ 1. Trend Continuation Entries (Add-ons):
Look to add to positions when:
Cluster 2 signal occurs
Price is above the NY session VWAP
Price structure has broken out of prior day high/low or range
⚠️ 2. Divergence Detection (Fade Traps):
Cluster 1 signals a bearish divergence (e.g., high volume but weak CVD).
Especially useful when price is failing to stay above VWAP.
Useful for early exits or reversal setups.
📊 3. Volume Profile Confirmation:
Combine with fixed or session-based volume profile tools.
Use Z-Score clusters to confirm volume spikes into low-volume nodes (LVNs) or during imbalance transitions.
📍 4. VWAP Structure Confirmation:
Anchored VWAP acts as a dynamic reference point.
Helps confirm acceptance vs. rejection zones at key institutional levels.
📈 Visuals & Alerts:
Color-coded volume bars show intensity of Z-Score & CVD confluence
CVD Line plots real-time delta bias with green/red coloring
Cluster-based shape markers highlight key bars for actionable signals
Optional: Add alerts for Cluster 2 above VWAP or Cluster 1 below VWAP
⚙️ Customization Options:
Adjustable Z-Score length
Custom anchor timeframe for CVD (e.g., 1D or sessions)
Adjustable max lookback depth
Toggle VWAP inclusion
Extendable to include additional filters: RSI, structure break alerts, etc.
🔧 Ideal Use Cases:
NY session intraday traders (ES, NQ, CL, 6E, FX pairs)
Breakout traders wanting order flow confirmation
Mean reversion traders spotting fake moves
Volume-based scalpers looking for edge on short-term order imbalance
Liquidity Sweep Filter [AlgoAlpha]Unlock a deeper understanding of market liquidity with the Liquidity Sweep Filter by AlgoAlpha. This indicator identifies liquidity sweeps, highlighting key price levels where large liquidations have occurred. By visualizing major and minor liquidation events, traders can better anticipate potential reversals and market structure shifts, making this an essential tool for those trading in volatile conditions.
Key Features :
🔍 Liquidity Sweep Detection – Identifies and highlights areas where liquidity has been swept, distinguishing between major and minor liquidation events.
📊 Volume Profile Integration – Displays a volume profile overlay, helping traders spot high-activity price zones where the market is likely to react.
📈 Trend-Based Filtering – Utilizes an adaptive trend detection algorithm to refine liquidity sweeps based on market direction, reducing noise.
🎨 Customizable Visualization – Modify colors, thresholds, and display settings to tailor the indicator to your trading style.
🔔 Alerts for Liquidity Sweeps & Trend Changes – Stay ahead of the market by receiving alerts when significant liquidity events or trend shifts occur.
How to Use:
🛠 Add the Indicator : Add the Liquidity Sweep Filter to your chart and configure the settings based on your preferred sensitivity. Adjust the major sweep threshold to filter out smaller moves.
📊 Analyze Liquidity Zones and trend direction : Look for liquidation levels where large buy or sell stops have been triggered. Major sweeps indicate strong reactions, while minor sweeps show gradual liquidity absorption. You can also see which levels are high in liquidity by the transparency of the levels.
🔔 Set-Up Alerts : Use the in-built alerts so you don't miss a trading opportunity
How It Works :
The Liquidity Sweep Filter detects liquidity events by tracking swing highs and lows (defined as a pivot where neighboring candles are lower/higher than it) where traders are likely to have placed stop-loss orders. It evaluates volume and price action, marking areas where liquidity has been absorbed by the market. Additionally, the integrated trend filter ensures that only relevant liquidity sweeps are highlighted based on market direction, lows in an uptrend and highs in a downtrend. The trend filter works by calculating a basis, and defining trend shifts when the closing price crosses over the upper or lower bands.The included volume profile further enhances analysis by displaying key trading zones where price may react.
Range Detect SystemTechnical analysis indicator designed to identify potential significant price ranges and the distribution of volume within those ranges. The system helps traders calculate POC and show volume history. Also detecting breakouts or potential reversals. System identifies ranges with a high probability of price consolidation and helps screen out extreme price moves or ranges that do not meet certain volatility thresholds.
⭕️ Key Features
Range Detection — identifies price ranges where consolidation is occurring.
Volume Profile Calculation — indicator calculates the Point of Control (POC) based on volume distribution within the identified range, enhancing the analysis of market structure.
Volume History — shows where the largest volume was traded from the center of the range. If the volume is greater in the upper part of the range, the color will be green. If the volume is greater in the lower part, the color will be red.
Range Filtering — Includes multi-level filtering options to avoid ranges that are too volatile or outside normal ranges.
Visual Customization — Shows graphical indicators for potential bullish or bearish crossovers at the upper and lower range boundaries. Users can choose the style and color of the lines, making it easier to visualize ranges and important levels on the chart.
Alerts — system will notify you when a range has been created and also when the price leaves the range.
⭕️ How it works
Extremes (Pivot Points) are taken as a basis, after confirming the relevance of the extremes we take the upper and lower extremes and form a range. We check if it does not violate a number of rules and filters, perform volume calculations, and only then is the range displayed.
Pivot points is a built-in feature that shows an extremum if it has not been updated N bars to the left and N bars to the right. Therefore, there is a delay depending on the bars specified to check, which allows for a more accurate range. This approach allows not to make unnecessary recalculations, which completely eliminates the possibility of redrawing or range changes.
⭕️ Settings
Left Bars and Right Bars — Allows you to define the point that is the highest among the specified number of bars to the left and right of this point.
Range Logic — Select from which point to draw the range. Maximums only, Minimums only or both.
Use Wick — Option to consider the wick of the candles when identifying Range.
Breakout Confirmation — The number of bars required to confirm a breakout, after which the range will close.
Minimum Range Length — Sets the minimum number of candles needed for a range to be considered valid.
Row Size — Number of levels to calculate POC. *Larger values increase the script load.
% Range Filter — Dont Show Range is than more N% of Average Range.
Multi Filter — Allows use of Bollinger Bands, ATR, SMA, or Highest-Lowest range channels for filtering ranges based on volatility.
Range Hit — Shows graphical labels when price hits the upper or lower boundaries of the range, signaling potential reversal or breakout points.
Range Start — Show points where Range was created.
PRINT_TYPELibrary "PRINT_TYPE"
Inputs
Inputs objects
Fields:
inbalance_percent (series int) : percentage coefficient to determine the Imbalance of price levels
stacked_input (series int) : minimum number of consecutive Imbalance levels required to draw extended lines
show_summary_footprint (series bool)
procent_volume_area (series int) : definition size Value area
new_imbalance_cond (series bool) : bool input for setup alert on new imbalance buy and sell
new_imbalance_line_cond (series bool) : bool input for setup alert on new imbalance line buy and sell
stop_past_imbalance_line_cond (series bool) : bool input for setup alert on stop past imbalance line buy and sell
Constants
Constants all Constants objects
Fields:
imbalance_high_char (series string) : char for printing buy imbalance
imbalance_low_char (series string) : char for printing sell imbalance
color_title_sell (series color) : color for footprint sell
color_title_buy (series color) : color for footprint buy
color_line_sell (series color) : color for sell line
color_line_buy (series color) : color for buy line
color_title_none (series color) : color None
Calculation_data
Calculation_data data for calculating
Fields:
detail_open (array) : array open from calculation timeframe
detail_high (array) : array high from calculation timeframe
detail_low (array) : array low from calculation timeframe
detail_close (array) : array close from calculation timeframe
detail_vol (array) : array volume from calculation timeframe
previos_detail_close (array) : array close from calculation timeframe
isBuyVolume (series bool) : attribute previosly bar buy or sell
Footprint_row
Footprint_row objects one footprint row
Fields:
price (series float) : row price
buy_vol (series float) : buy volume
sell_vol (series float) : sell volume
imbalance_buy (series bool) : attribute buy inbalance
imbalance_sell (series bool) : attribute sell imbalance
buy_vol_box (series box) : for ptinting buy volume
sell_vol_box (series box) : for printing sell volume
buy_vp_box (series box) : for ptinting volume profile buy
sell_vp_box (series box) : for ptinting volume profile sell
row_line (series label) : for ptinting row price
empty (series bool) : = true attribute row with zero volume buy and zero volume sell
Imbalance_line_var_object
Imbalance_line_var_object var objects printing and calculation imbalance line
Fields:
cum_buy_line (array) : line array for saving all history buy imbalance line
cum_sell_line (array) : line array for saving all history sell imbalance line
Imbalance_line
Imbalance_line objects printing and calculation imbalance line
Fields:
buy_price_line (array) : float array for saving buy imbalance price level
sell_price_line (array) : float array for saving sell imbalance price level
var_imba_line (Imbalance_line_var_object) : var objects this type
Footprint_bar
Footprint_bar all objects one bar with footprint
Fields:
foot_rows (array) : objects one row footprint
imba_line (Imbalance_line) : objects imbalance line
row_size (series float) : size rows
total_vol (series float) : total volume one footprint bar
foot_buy_vol (series float) : buy volume one footprint bar
foot_sell_vol (series float) : sell volume one footprint bar
foot_max_price_vol (map) : map with one value - price row with max volume buy + sell
calc_data (Calculation_data) : objects with detail data from calculation resolution
Support_objects
Support_objects support object for footprint calculation
Fields:
consts (Constants) : all consts objects
inp (Inputs) : all input objects
bar_index_show_condition (series bool) : calculation bool value for show all objects footprint
row_line_color (series color) : calculation value - color for row price
dop_info (series string)
show_table_cond (series bool)
Volume Heatmap 2024 | NXT2017 Christmas EditionHi big players around the world,
I wish you a merry christmas time.
Today I have a nice present for you: a new volume heatmap indicator for free using!
HISTORY
My first volume heatmap project got a lot of feedback and a big demand. You can find it here:
In this time pinescript version 4 was the newest one and I worked the first time with arrays.
Today we have pinescript version 5 and some new features. This is why I tried again with matrix function and the results are better than I expected.
HOW IT WORKS
The indicator calculates similar like the volume profile. It looks back and every volume where the close price is on the same row area, the volume will cumulated. How much rows the new chart view is showing, you can choose manually.
The mind behind this is to find high volume levels, where high volume catch the price in a range or get function as support/resistance line.
PICTURES
I hope it helps for your trading. You are welcome to give some comments.
Merry christmas and best regards
NXT2017
Multi-Asset Performance [Spaghetti] - By LeviathanThis indicator visualizes the cumulative percentage changes or returns of 30 symbols over a given period and offers a unique set of tools and data analytics for deeper insight into the performance of different assets.
Multi Asset Performance indicator (also called “Spaghetti”) makes it easy to monitor the changes in Price, Open Interest, and On Balance Volume across multiple assets simultaneously, distinguish assets that are overperforming or underperforming, observe the relative strength of different assets or currencies, use it as a tool for identifying mean reversion opportunities and even for constructing pairs trading strategies, detect "risk-on" or "risk-off" periods, evaluate statistical relationships between assets through metrics like correlation and beta, construct hedging strategies, trade rotations and much more.
Start by selecting a time period (e.g., 1 DAY) to set the interval for when data is reset. This will provide insight into how price, open interest, and on-balance volume change over your chosen period. In the settings, asset selection is fully customizable, allowing you to create three groups of up to 30 tickers each. These tickers can be displayed in a variety of styles and colors. Additional script settings offer a range of options, including smoothing values with a Simple Moving Average (SMA), highlighting the top or bottom performers, plotting the group mean, applying heatmap/gradient coloring, generating a table with calculations like beta, correlation, and RSI, creating a profile to show asset distribution around the mean, and much more.
One of the most important script tools is the screener table, which can display:
🔸 Percentage Change (Represents the return or the percentage increase or decrease in Price/OI/OBV over the current selected period)
🔸 Beta (Represents the sensitivity or responsiveness of asset's returns to the returns of a benchmark/mean. A beta of 1 means the asset moves in tandem with the market. A beta greater than 1 indicates the asset is more volatile than the market, while a beta less than 1 indicates the asset is less volatile. For example, a beta of 1.5 means the asset typically moves 150% as much as the benchmark. If the benchmark goes up 1%, the asset is expected to go up 1.5%, and vice versa.)
🔸 Correlation (Describes the strength and direction of a linear relationship between the asset and the mean. Correlation coefficients range from -1 to +1. A correlation of +1 means that two variables are perfectly positively correlated; as one goes up, the other will go up in exact proportion. A correlation of -1 means they are perfectly negatively correlated; as one goes up, the other will go down in exact proportion. A correlation of 0 means that there is no linear relationship between the variables. For example, a correlation of 0.5 between Asset A and Asset B would suggest that when Asset A moves, Asset B tends to move in the same direction, but not perfectly in tandem.)
🔸 RSI (Measures the speed and change of price movements and is used to identify overbought or oversold conditions of each asset. The RSI ranges from 0 to 100 and is typically used with a time period of 14. Generally, an RSI above 70 indicates that an asset may be overbought, while RSI below 30 signals that an asset may be oversold.)
⚙️ Settings Overview:
◽️ Period
Periodic inputs (e.g. daily, monthly, etc.) determine when the values are reset to zero and begin accumulating again until the period is over. This visualizes the net change in the data over each period. The input "Visible Range" is auto-adjustable as it starts the accumulation at the leftmost bar on your chart, displaying the net change in your chart's visible range. There's also the "Timestamp" option, which allows you to select a specific point in time from where the values are accumulated. The timestamp anchor can be dragged to a desired bar via Tradingview's interactive option. Timestamp is particularly useful when looking for outperformers/underperformers after a market-wide move. The input positioned next to the period selection determines the timeframe on which the data is based. It's best to leave it at default (Chart Timeframe) unless you want to check the higher timeframe structure of the data.
◽️ Data
The first input in this section determines the data that will be displayed. You can choose between Price, OI, and OBV. The second input lets you select which one out of the three asset groups should be displayed. The symbols in the asset group can be modified in the bottom section of the indicator settings.
◽️ Appearance
You can choose to plot the data in the form of lines, circles, areas, and columns. The colors can be selected by choosing one of the six pre-prepared color palettes.
◽️ Labeling
This input allows you to show/hide the labels and select their appearance and size. You can choose between Label (colored pointed label), Label and Line (colored pointed label with a line that connects it to the plot), or Text Label (colored text).
◽️ Smoothing
If selected, this option will smooth the values using a Simple Moving Average (SMA) with a custom length. This is used to reduce noise and improve the visibility of plotted data.
◽️ Highlight
If selected, this option will highlight the top and bottom N (custom number) plots, while shading the others. This makes the symbols with extreme values stand out from the rest.
◽️ Group Mean
This input allows you to select the data that will be considered as the group mean. You can choose between Group Average (the average value of all assets in the group) or First Ticker (the value of the ticker that is positioned first on the group's list). The mean is then used in calculations such as correlation (as the second variable) and beta (as a benchmark). You can also choose to plot the mean by clicking on the checkbox.
◽️ Profile
If selected, the script will generate a vertical volume profile-like display with 10 zones/nodes, visualizing the distribution of assets below and above the mean. This makes it easy to see how many or what percentage of assets are outperforming or underperforming the mean.
◽️ Gradient
If selected, this option will color the plots with a gradient based on the proximity of the value to the upper extreme, zero, and lower extreme.
◽️ Table
This section includes several settings for the table's appearance and the data displayed in it. The "Reference Length" input determines the number of bars back that are used for calculating correlation and beta, while "RSI Length" determines the length used for calculating the Relative Strength Index. You can choose the data that should be displayed in the table by using the checkboxes.
◽️ Asset Groups
This section allows you to modify the symbols that have been selected to be a part of the 3 asset groups. If you want to change a symbol, you can simply click on the field and type the ticker of another one. You can also show/hide a specific asset by using the checkbox next to the field.
Liquidity PeaksThe "Liquidity Peaks" indicator is a tool designed to identify significant supply and demand zones based on volumetric analysis. It analyzes the volume profile within a specified lookback range to pinpoint the most volumetric point and draw corresponding zones on the price chart.
The 𝐋𝐢𝐪. 𝐏𝐞𝐚𝐤𝐬 indicator utilizes volume data to identify key supply and demand areas on the price chart. By examining the volume profile within a defined lookback range, it highlights three distinct zones: liquidity grab, volume containment, and the most volumetric point.
Zones and their meanings:
Liquidity grab (Orange box): This zone represents a price level where there is a significant swipe of the previous demand zone within the volume range. It indicates a potential shift in market sentiment and serves as a key supply or demand area.
Volume containment (Gray box): This zone displays the area of volume contained before the peak in volume. It provides insights into the range where buying or selling pressure was concentrated, highlighting potential support or resistance levels.
Most volumetric point (Light blue box): This zone represents the point within the lookback range that exhibits the highest volume. It signifies a significant area of market interest and indicates a potential supply or demand level.
Adjustable options:
Adjust liquidity Grab: This option allows you to adjust the size of the boxes. When enabled, the box size is set to twice the size of the high or low of the candle's wick. This adjustment enhances the visibility and accuracy of identifying swipes at specific price levels.
Show origin: Enabling this option ensures that the liquidity boxes are drawn from the wick they were created from. This provides a clear visual reference to the specific candle and highlights the liquidity levels associated with it.
Utility:
The 𝐋𝐢𝐪. 𝐏𝐞𝐚𝐤𝐬 indicator is a valuable tool for traders and investors seeking to identify significant supply and demand zones in the market. By analyzing volume data and drawing corresponding zones on the chart, it helps to pinpoint areas where buying or selling pressure is likely to emerge.
Traders can utilize this information to identify potential support and resistance levels, plan their entries and exits, and make more informed trading decisions. The liquidity grab zones can act as potential reversal or breakout points, while the volume containment zones and most volumetric points provide insights into areas of high market interest.
It is important to note that this indicator should be used in conjunction with other technical analysis tools and indicators to confirm trading signals and validate market dynamics.
Example Charts: